dynamic var categories: [Category]?
dynamic var productViewModels: [ProductViewModel]?
var totalCategories = 1
dynamic var currentPage = 0
override init() {
super.init()
RACObserve(self, "categories").subscribeNext { [weak self] (x) in
if let this = self, let categories = x as? [Category] {
this.totalCategories = categories.count ?? 1 // Why this code doesn't work?
this.productViewModels = categories.map { ProductViewModel(category: $0.tagName) }
this.currentPage = 0
}
}
categories = Category.temporaryInitializer()
}
我认为如果x
有一些价值,RACObserve(self, "categories")
将使用包含categories
的值。但它没有任何价值。
我不知道为什么x
总是nil
。
======解决问题======
categories = Category.temporaryInitializer()
不应该在init()
。
我猜RACObserve
后init()
工作正常。
但我仍然不知道为什么。
答案 0 :(得分:1)
当您为存储属性指定默认值或在初始化程序中设置其初始值时,将直接设置该属性的值,而不调用任何属性观察者。
反应观察员致力于KVO。我想这就是你的观察者没有被召唤的原因。