"实例成员不能用于"懒惰属性中的错误

时间:2016-03-14 14:45:09

标签: arrays swift

I wonder this error

请帮我解决这个问题或告诉我宣布这个属性的正确方法。

// MARK: Properties
var expensiveItems = [Item]()
var cheapItems = [Item]()

lazy var allItems: [[Item]] = {
    return [cheapItems, expensiveItems]
}()

1 个答案:

答案 0 :(得分:4)

因为您要将结果的结果分配给延迟加载的属性 - 您需要遵循闭包规则。其中一条规则是,如果您指的是self - 您必须明确地执行此操作。 (虽然这不适用于@noescape关闭 - 但无论如何你都不能在这里使用它们)

这只是为了让您承认自己正在捕获并保留self,但看到它是一个懒惰的属性,它不应该导致保留周期,因为它是只调用一次,然后将结果分配给该属性。

因此,您需要使用self.cheapItemsself.expensiveItems

// MARK: Properties
var expensiveItems = [Item]()
var cheapItems = [Item]()

lazy var allItems: [[Item]] = {
    return [self.cheapItems, self.expensiveItems]
}()