var rawData: NSDictionary!
lazy var nativeData: NativeData? = {
return NativeData(JSONDictionary: self.rawData as [NSObject : AnyObject])
}()
导致错误:
'的NSDictionary&#39!;不能转换为' [NSObject:AnyObject]&#39 ;;没有 你的意思是使用' as!'迫使低垂?
好的,然后......
lazy var nativeData: NativeData? = {
return NativeData(JSONDictionary: self.rawData as! [NSObject : AnyObject])
}()
发出警告:
来自NSDictionary的强制演员!'到[NSObject:AnyObject]'总是 成功;你的意思是使用'作为'?
有趣的是,如果我删除lazy
并将nativeData
声明为常规可选项,那么我可以完成as
广告投放:
obj.nativeData = NativeData(JSONDictionary: obj.rawData as [NSObject : AnyObject])
这是编译器中的错误吗? (Xcode 7.3(7D175))
更新
变得陌生。这是一个包含的案例。
//
// A.swift
//
import Foundation
class NativeData {
init(JSONDictionary: [NSObject : AnyObject]) {
}
}
func == (lhs: A, rhs: A) -> Bool {
return lhs.id == rhs.id
}
class A {
var id: Int64 = 0
var rawData: NSDictionary!
lazy var nativeData: NativeData? = {
return NativeData(JSONDictionary: self.rawData as [NSObject : AnyObject])
}()
}
如果删除func ==
运算符定义,则编译器错误消失。 (在我的实际代码中,A
符合Equatable
。)请注意,如果我将此代码放在游乐场中,则不会发生错误。