懒惰variables给'实例成员不能用于types'错误
我现在有几次这个错误,我采取了不同的解决方法,但我真的好奇它为什么会发生。 基本情况如下:
class SomeClass { var coreDataStuff = CoreDataStuff! lazy var somethingElse = SomethingElse(coreDataStuff: coreDataStuff) }
所以我明白,我不能在课程完全初始化之前使用自我,但在这种情况下,我使用自己的属性coreDataStuff
来初始化一个懒惰的变种,这将不会发生,直到我的实例准备就绪。
任何人都可以解释我为什么我得到Instance member can not be used on type
错误?
尝试一下:
class SomeClass { var coreDataStuff = CoreDataStuff! lazy var somethingElse: SomethingElse = SomethingElse(coreDataStuff: self.coreDataStuff) }
确定你的懒惰variables的types并添加self.
是很重要的self.
到你通过的论点
在Swift中有两个很容易被惰性variables忽略的要求,不幸的是,这些警告是神秘的,并没有解释如何解决这个问题。
懒惰variables要求
-
使用
self.
:当提到实例成员时,您必须使用self.
。 (egself.radius
。)如果你忘记使用
self.
,你会得到这个错误:实例成员'myVariable'不能用于'MyType'types
-
指定types:不能推断types,必须明确写入。 (例如
: Float
)如果你忘记指定types,你会得到这个错误:
使用未parsing的标识符'self'
例
struct Circle { let radius: Float lazy var diameter: Float = self.radius * 2 // Good //lazy var diameter = radius * 2 // Bad (Compile error) }