【发布时间】:2014-03-07 05:52:23
【问题描述】:
我有一系列字典,需要以非常具体的方式进行过滤。用例子来解释是最容易的。
假设我有一个包含以下三个字典的数组,其中 @"threadId"、@"subject"、@"messageId" 是键:
NSDictionary #1:
@"threadId" : @"1234"
@"subject" : @"hello"
@"messageId" : @"0001"
NSDictionary #2:
@"threadId" : @"1234"
@"subject" : @"hello"
@"messageId" : @"0002"
NSDictionary #3:
@"threadId" : @"9101"
@"subject" : @"goodbye"
@"messageId" : @"0005"
我正在考虑任何具有相同 @"threadId" 和 @"subject" 值的字典都是重复的,即使 @"messageId" 不同。因此,我认为字典 1 和字典 2 是重复的,我想从上面的数组中删除字典 1 或字典 2(不是两者)。换句话说,我想将所有三个字典的原始数组过滤成一个新数组,其中包含字典 1 和 3 或字典 2 和 3。
到目前为止,我所做的所有尝试都导致了过多的 for 循环,在其中我尝试按 threadId 对字典进行排序和分隔......但后来我陷入了比较部分。我看过按谓词过滤,但看起来它只删除满足特定条件的对象,与与其他对象的比较无关。 NSSet 不起作用,因为我认为是重复的对象实际上并不是重复的。
我想知道是否有人可以提出执行此过滤的一般策略。
【问题讨论】:
-
可能重复:stackoverflow.com/a/13499453/1301013 在操作数据集时可能需要使用 NSPredicate。
标签: ios objective-c nsarray nsdictionary