iphone - Objective-C 有选择地从 plist 填充表;如果键等于

标签 iphone objective-c ios uitableview plist

plist1 是一个包含 40 个字典的数组,每个字典有 4 个字符串。 plist2 也是一个数组,但包含 120 个字典,每个字典有 2 个字符串。

如果我在一个表中列出曲棍球联赛中的所有球队(从 plist1 中的某个键填充),假设我选择了第五个。这将推送一个新表。 plist2 中的 120 个字典有两个字符串 - 每个字符串都有一个按顺序排列的联盟历史年份,一个是当年谁赢得了冠军。我希望第二个表仅列出字典的第二个键与刚刚在第一个表 plist1 中选择的团队名称相同的年份。因此,当我从第一个表中选择“5”队时,我希望在第二个表中只看到“5”队获胜的年份。这个想法是所有年份都将出现在 plist2 中,但不相关的年份将在移动中的实际表中被阻止。

我怎么说“如果用户选择了 X 队,那么只显示 X 队的年份,而不是所有年份。”

谢谢!

最佳答案

实际上,您可以使用 NSPredicate 很好地完成这种过滤:

NSDictionary *testA = [NSDictionary dictionaryWithObjectsAndKeys:@"valA", @"key1", @"1", @"key2", nil];
NSDictionary *testB = [NSDictionary dictionaryWithObjectsAndKeys:@"valB", @"key1", @"2", @"key2", nil];
NSDictionary *testC = [NSDictionary dictionaryWithObjectsAndKeys:@"valC", @"key1", @"1", @"key2", nil];
NSDictionary *testD = [NSDictionary dictionaryWithObjectsAndKeys:@"valD", @"key1", @"3", @"key2", nil];

NSArray *testArr = [NSArray arrayWithObjects:testA, testB, testC, testD, nil];

NSPredicate *pred = [NSPredicate predicateWithFormat:@"key2 == %@", @"1"];
NSArray *testFilter = [testArr filteredArrayUsingPredicate:pred];

NSLog(@"%@", testFilter);

这个设置创建了 4 个字典和一个数组。过滤器表达式现在搜索所有包含的对象,其中 key2等于1 , 应该是 testAtestC .瞧,这就是输出:

2011-11-24 18:57:07.822 testapp[9977:f803] (
        {
        key1 = valA;
        key2 = 1;
    },
        {
        key1 = valC;
        key2 = 1;
    }
)

通过这种方式,您可以创建一个谓词以根据您的团队名称进行过滤,并创建数组的过滤版本。通常这适用于支持键值编码的所有类型的对象(NSDictionary 支持,更多信息:http://developer.apple.com/library/ios/#documentation/Cocoa/Conceptual/KeyValueCoding/Articles/BasicPrinciples.html#//apple_ref/doc/uid/20002170)

关于iphone - Objective-C 有选择地从 plist 填充表;如果键等于,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8260693/

相关文章:

iphone - 检测是否在 Cocos2d-iphone 上触摸了特定的 Sprite

ios - CGPathAddArc 创建的圆弧圆心坐标不一致

ios - 将 NSRangePointer 从 Objective-C 翻译成 Swift

iphone - 如何在attachmentView/disclosure区域中创建带有“信息符号”的UITableViewCell? (例如iTunes Connect应用)

ios - UIScrollView scrollViewShouldScrollToTop : alternative available when already at the top?

ios - 在 ios 中获取好友列表时,Facebook SDK Error Domain=com.facebook.sdk Code=5

ios - 在 iOS 应用程序中使用 JSON 的最佳方式是什么?

ios - 如何使用 Xcode 4.2 导入用于 Objective-C 的 Google API 客户端库

ios - HealthKit iTunes Connect 授权错误

ios - subview UINavigationController 泄漏 ARC