0

我有一个绑定到 tableview 的 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];

}

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

4

1 回答 1

4

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

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

这是一种 hack,因为 aBOOL将被解释为 0 或 1。
语义上更正确的方法是。

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

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

于 2013-02-14T15:38:06.880 回答