Cannot use instance member ‘getEventCalendar’ within property
initializer; property initializers run before ‘self’ is available.
是否有任何合适的方法来初始化惰性实例变量的值取决于self的其他对象类型实例变量(不仅仅是自我alone)?我已经例如尝试将getEventCalendar从方法转换为函数,但这也无济于事.
class AbstractEventCalendarClIEnt { let eventStore: EKEventStore let entityType: EKEntityType lazy var eventCalendar = getEventCalendar() init(eventStore: EKEventStore,entityType: EKEntityType) { self.eventStore = eventStore self.entityType = entityType } func getEventCalendar() -> EKCalendar? { // ... }}你可以使用一次只执行的闭包来捕获self的属性并在执行时使用它们(=首先使用lazy属性).例如.
class Foo { var foo: Int var bar: Int lazy var lazyFoobarSum: Int = { return self.foo + self.bar }() init(foo: Int,bar: Int) { self.foo = foo self.bar = bar }}let foo = Foo(foo: 2,bar: 3)foo.foo = 7print(foo.lazyFoobarSum) // 10
W.r.t.对于你自己的尝试:你可以以同样的方式在这个曾经执行过的闭包中使用self的帮助(实例)函数.
class Foo { var foo: Int var bar: Int lazy var lazyFoobarSum: Int = { return self.getFoobarSum() }() init(foo: Int,bar: Int) { self.foo = foo self.bar = bar } func getFoobarSum() -> Int { return foo + bar }}let foo = Foo(foo: 2,bar: 3)foo.foo = 7print(foo.lazyFoobarSum) // 10总结
以上是内存溢出为你收集整理的swift – 使用依赖于其他实例变量的值初始化惰性实例变量全部内容,希望文章能够帮你解决swift – 使用依赖于其他实例变量的值初始化惰性实例变量所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)