0

我有一张有 3 个部分的桌子。我还有一系列字典,用于命名我的单元格等。我想根据最喜欢的键用我的字典中的项目填充我的第二部分。

这是我的字典的样子:

<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 row] 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 过滤数组,然后使用过滤后的数组驱动第二部分:

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 回答