0

テーブルビューにバインドされた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];

}

今、ブール値であり、yes に設定されているすべての値をカウントする方法を知る必要があります..ありがとう!

4

1 に答える 1

4

実際、オブジェクトをループする必要はないと思います。

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

BOOLaは 0 または 1 として解釈されるため、これは一種のハックです
。意味的により正しい方法は次のとおりです。

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

これは、 (またはそのサブクラス)arrangedObjectsのインスタンスを含む配列 ( ) があることを前提としています。オブジェクトには、型(管理対象オブジェクトの BOOL 値の標準ラッパー)NSManagedObjectと呼ばれるプロパティがあります。行が表示されるとき、これがの場合、チェック済みとしてマークされます。チェックマークを変更すると (行を選択するなど)、モデルが更新されます。適切な管理対象オブジェクトが取得され、トグルされます。boolPropertyNSNumberboolProperty@YESboolProperty

于 2013-02-14T15:38:06.880 に答える