通过arraycontroller获取已选中复选框的列表

时间:2013-02-14 15:18:24

标签: objective-c cocoa boolean iteration nsarraycontroller

我有一个绑定到tableview的arraycontroller。我需要返回表格中检查过的检查数量。 arraycontroller充满了nsmutabledictionaries。这是我到目前为止的代码:

-(IBAction)getlist:(id)sender{
checkedchecks = 0;
for (NSManagedObject *a in imagescontroller.arrangedObjects)
{

 ////MISSING CODE GOES HERE
}
NSAlert *alert = [[NSAlert alloc] init] ;
[alert setMessageText:[NSString stringWithFormat:@"%ld",(long)checkedchecks ]];
[alert runModal];

}

现在我需要知道如何计算布尔值的所有值并将其设置为是...谢谢!

1 个答案:

答案 0 :(得分:4)

实际上,我认为你不必遍历你的对象。

NSUInteger checked = [(NSNumber*)[imagesController.arrangedObjects
                valueForKeyPath:@"@sum.boolProperty"] integerValue];

这有点像黑客,因为BOOL将被解释为0或1 语义上更正确的方法是。

NSUInteger checked = [imagesController.arrangedObjects
                 filteredArrayUsingPredicate:[NSPredicate predicateWithFormat:
                   @"boolProperty == %@", @YES]].count;

这假设您有一个数组(arrangedObjects),其中包含NSManagedObject(或其子类)的实例。对象具有类型为boolProperty的{​​{1}}属性(它是托管对象中BOOL值的标准包装器)。显示一行时,如果NSNumberboolProperty,则会将其标记为已选中。如果更改复选标记(例如,通过选择行),则应更新模型:应检索相应的托管对象并切换@YES

相关问题