-5

我有一个带有对象 {3, 5, 6} 的 NSArray 和一个带有 {3, 5} 的 NSDictionary 我想比较它们并删除“6”,因为它从 NSDictionary 中丢失了我正在使用以下代码

[lists enumerateObjectsUsingBlock:^(id obj, NSUInteger idx, BOOL *stop) {

     Item *item = (Item *)obj;
     NSString *value = [NSString stringWithFormat:@"%@", item.remoteID];

     for (NSDictionary *dictionary in responseObject)
     {
         NSString *idValue = [dictionary objectForKey:@"id"];

         if ([value isEqualToString:idValue])
         {
            NSLog(@"value %@", value);
         }
     }

}];

NSLog(@"value %@", value);

在这里我得到了正确的值,但我想在我的案例“6”中得到缺失的值

欢迎任何想法。

4

2 回答 2

1

如果我理解正确,您有一个数组lists和一个responseObject字典数组,其中包含一个id带有要与数组进行比较的对象的键lists

NSArray *lists = @[@3, @5, @6];
NSArray *responseObject = @[@{@"id":@3},@{@"id":@5}];

然后,您可以执行以下操作来获取“缺失值”:

NSArray *idValues = [responseObject valueForKey:@"id"];
//Subset of objects in lists that are not present in idValues:
NSMutableArray *result = [NSMutableArray arrayWithArray:lists];
[result removeObjectsInArray:idValues];
于 2013-09-10T18:23:42.367 回答
0

有几种方法可以解决这个问题。

如果您希望将其视为一项过滤任务,在其中您通过 中的值过滤lists数组,那么一个简单的谓词就可以了:idresponseObject

NSPredicate *responsePred = [NSPredicate predicateWithFormat: @"self IN %@", [responseObject valueForKey: @"id"]];
NSArray *result = [lists filteredArrayUsingPredicate: responsePred];
于 2013-09-10T20:15:12.660 回答