And*_*s C 1 objective-c ios reactive-cocoa
我对NSMutableArray中的值更改有问题.
我有以下(稍微简化)代码来检测更改:
[[RACObserve(self, postedImagesIds) filter:^BOOL(NSMutableArray * postedImagesIds) {
return [postedImagesIds count] > 0;
}] subscribeNext:^(NSMutableArray * postedImagesIds) {
[self uploadFields:fields];
}];
Run Code Online (Sandbox Code Playgroud)
这里的想法是uploadFields在有变化的时候打电话NSMutableArray postedImagesIds.但不仅在添加新元素时,而且在更新值时也是如此:
[self.postedImagesIds replaceObjectAtIndex:i withObject:imagePosted.imagePostedId];
Run Code Online (Sandbox Code Playgroud)
那么事情就是当价值更新时,RACObserve永远不会知道!有没有办法认识到这种变化?
提前致谢!
eri*_*ice 10
它可以做,有点.重要的是你必须通过KVC on执行NSMutableArray变异self,而不是对NSMutableArray对象的独立引用.换句话说,如果你这样做,它将无法工作:
[self.postedImagesIds addObject:imagePosted.imagePostedId];
or
[self.postedImagesIds replaceObjectAtIndex:i withObject:imagePosted.imagePostedId];
Run Code Online (Sandbox Code Playgroud)
相反,你必须像这样添加或替换对象:
NSMutableArray *fromKVC = [self mutableArrayValueForKey:@"postedImagesIds"];
[fromKVC addObject:imagePosted.imagePostedId];
or
[fromKVC replaceObjectAtIndex:i withObject:imagePosted.imagePostedId];
Run Code Online (Sandbox Code Playgroud)
这是因为建立的KVO RACObserve()相对于您传入的对象作为其第一个参数(self在本例中),因此只有通过观察对象的KVC兼容突变才会触发观察通知.
| 归档时间: |
|
| 查看次数: |
2088 次 |
| 最近记录: |