我正在尝试使用ReactiveCocoa来启用按钮,具体取决于NSMutableSet实例中的对象数是否大于零。
我正在使用以下代码,但在运行时遇到崩溃。有什么想法吗?
RAC(self.navigationItem.leftBarButtonItem, enabled) = [RACSignal combineLatest:@[self.selectedRows] reduce:^(NSMutableSet *set){
return @([set count] > 0);
}];
'NSInvalidArgumentException',原因:' - [__ NSSetM map:]:无法识别的选择器发送到实例0x9671d10'
答案 0 :(得分:1)
您需要将selectedRows
属性转换为信号:
RAC(self.navigationItem.leftBarButtonItem, enabled) = [RACSignal combineLatest:@[RACAbleWithStart(self.selectedRows)] reduce:^(NSMutableSet *set){
return @([set count] > 0);
}];
答案 1 :(得分:0)
这就是悲哀地知道NSarry,NSMutableArray的不支持志愿。在做类似的事情时
但幸运的是,UIViewController符合KVO标准。
//create a readonly property selectionCount
@property (nonatomic, readonly)NSInteger selectionCount;
...
//Implement the getter method
-(NSInteger)selectionCount{
return self.arrSelection.count;
}
...
RAC(self.btnConfirm, enabled) = [RACSignal combineLatest:@[RACAbleWithStart(self.selectionCount)] reduce:^(NSNumber *count){
return @([count integerValue] > 0);
}];