1

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

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

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

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

4

2 回答 2

1

你需要把你的selectedRows财产变成一个信号:

RAC(self.navigationItem.leftBarButtonItem, enabled) = [RACSignal combineLatest:@[RACAbleWithStart(self.selectedRows)] reduce:^(NSMutableSet *set){
    return @([set count] > 0);
}];
于 2013-05-15T21:19:13.977 回答
0

知道 NSarry、NSMutableArray 不支持 KVO 真是令人难过。在做类似的事情时

但幸运的是,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);
    }];
于 2015-04-01T10:58:58.000 回答