0

我很困惑如何比较两个 NSMutableArray。这是我的代码。如果数组元素已经存在于本地,它将采用它,否则采用默认数组。怎么做 ?

   for (NSDictionary *data in array) {
                    NSString *fbid = [data objectForKey:@"id"];

                    for (KP_PERSON *person in self.myPersonArray) {
                        if ([person.UserDef2 isEqualToString:fbid]) {
                            //Found fbid take the array element
                        }
                        else{
                            //continue take the array
                        }
                    }
                }

请帮忙。谢谢。

我正在尝试将本地数据库与 json Array 进行比较。如果 fbid 已经存在于本地数据库中,它将添加到对象中,否则它将使用 json 数组将数据填充到 tableview。

4

1 回答 1

0

Jason,我不太确定您的要求是什么,但据我了解,谓词是您问题的答案,这对搜索非常有帮助。块谓词使其非常易于使用。

NSArray *allFbIds = [self.myPersonArray valueForKeyPath:@"UserDef2"];
NSPredicate *predicate = [NSPredicate predicateWithBlock:^BOOL(id evaluatedObject, NSDictionary *bindings) {
    NSDictionary *data = (NSDictionary *)evaluatedObject;
    NSString *fbid = [data objectForKey:@"id"];
    return [allFbIds containsObject:fbid];
}];

NSArray *filetr = [array filteredArrayUsingPredicate:predicate];

如果任何 fbID 将在 myPersonArray 的 KP_PERSON 对象中的属性 UserDef2 中可用,该对象将在数组中过滤。

我认为这可能会解决您的问题。

于 2013-07-16T07:37:52.077 回答