我有一个绑定到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];
}
现在我需要知道如何计算布尔值的所有值并将其设置为是...谢谢!
答案 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值的标准包装器)。显示一行时,如果NSNumber
为boolProperty
,则会将其标记为已选中。如果更改复选标记(例如,通过选择行),则应更新模型:应检索相应的托管对象并切换@YES
。