0

私は3つのセクションを持つテーブルを持っています。また、セルの名前付けなどに使用する一連の辞書もあります。お気に入りのキーに基づいて、辞書の項目を 2 番目のセクションに入力したいと考えています。

これは私の辞書がどのように見えるかです:

<array>
    <dict>
        <key>favorite</key>
        <string>NO</string>
        <key>title</key>
        <string>accessories.sku</string>
        <key>checkedState</key>
        <string>NO</string>
    </dict>
    <dict>
        <key>favorite</key>
        <string>YES</string>
        <key>title</key>
        <string>accessoriesImage</string>
        <key>checkedState</key>
        <string>NO</string>
    </dict>

私は以前に他のことのためにこの辞書を繰り返しましたが、もう一度それを行う必要があることはわかっていますが、この場合は完全には把握できません。

static NSString *kTitleKey = @"title";
static NSString *kCheckedState  = @"checkedState";
static NSString *kFavorite = @"favorite";

for (id dict in myArray]) {
    if ([dict[kFavorite] isEqualToString:@"YES"]) {
       cell.textLabel.text = [myArray objectAtIndex:[indexPath row] valueForKey:kTitleKey];
    }
}

しかし、もちろんcell.textLabel.text = [myArray objectAtIndex:[indexPath 行] valueForKey:kTitleKey]は正しくありません。

4

2 に答える 2

1

あなたはすでにあなたと一致していdictionary[kFavorite]ますmyArray。このようにループをコーディングできます。

for (id dict in myArray]) {
   if ([dict[kFavorite] isEqualToString:@"YES"]) {
      cell.textLabel.text = dict[kTitleKey];
   }
}
于 2012-12-08T12:43:57.817 に答える
0

NSPredicate を使用して配列をフィルター処理し、フィルター処理された配列で 2 番目のセクションを駆動できます。

static NSString *kTitleKey = @"title";
static NSString *kCheckedState  = @"checkedState";
static NSString *kFavorite = @"favorite";

NSPredicate *predicate = [NSPredicate predicateWithFormat:@"%@ CONTAINS[c] %@", kFavorite, @"YES"];

NSArray *filteredArray = [myArray filteredArrayUsingPredicate:predicate];
于 2012-12-07T20:40:40.397 に答える