使用ReactiveCocoa根据NSSet对象计数启用按钮

时间:2013-05-15 20:18:41

标签: objective-c reactive-cocoa

我正在尝试使用ReactiveCocoa来启用按钮,具体取决于NSMutableSet实例中的对象数是否大于零。

我正在使用以下代码,但在运行时遇到崩溃。有什么想法吗?

RAC(self.navigationItem.leftBarButtonItem, enabled) = [RACSignal combineLatest:@[self.selectedRows] reduce:^(NSMutableSet *set){
    return @([set count] > 0);
}];

'NSInvalidArgumentException',原因:' - [__ NSSetM map:]:无法识别的选择器发送到实例0x9671d10'

2 个答案:

答案 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);
    }];