是否可以观察尚未设置的对象的属性?
我正在尝试实现MVVM模式,这是我到目前为止所拥有的:
在我的视图控制器中,我实例化视图模型和模型:
- (void)viewDidLoad
{
[super viewDidLoad];
Model * model = [Model initWithSomeData:[self dataFromSomewhere]];
ViewModel * viewModel = [[ViewModel alloc] init];
viewModel.model = model;
RAC(self.propertyLabel, text) = [RACObserve(self.viewModel, someTransformedProperty];
}
现在在ViewModel类中,我在初始化程序中有以下代码
- (instancetype)init
{
self = [super init];
if (self) {
RAC(self, someTransformedProperty = [RACObserve(self.model, plainProperty) map:id^(id value) {
return [self transformProperty:value];
}];
}
}
现在的问题是属性标签没有设置。有没有办法解决?此外 - 如果plainProperty
中的model
为零,即使我将nilValue
作为RAC
宏的第3个参数提供,我也会遇到崩溃。
非常感谢任何帮助。
答案 0 :(得分:2)
呀!只需将RACObserve(self.model, plainProperty)
转为RACObserve(self, model.plainProperty)
。
哦,但也是:
ViewModel * viewModel = [[ViewModel alloc] init];
viewModel.model = model;
self.viewModel = viewModel; // <--- don't forget that
RAC(self.propertyLabel, text) = RACObserve(self.viewModel, someTransformedProperty);
就崩溃而言,很难说没有更多信息会是什么。 transformProperty:
上会nil
崩溃吗?