【问题标题】:ios compare two NSMutableArrayios比较两个NSMutableArray
【发布时间】:2013-07-16 03:31:17
【问题描述】:

我很困惑如何比较两个 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 数组进行比较。如果本地数据库中已经存在 fbid,它将添加到对象中,否则它将使用 json 数组将数据填充到 tableview。

【问题讨论】:

  • 也许只有我一个人......你到底想比较什么,你想在哪里消费它?您介意举个例子来帮助推动解决方案吗?
  • 但是比较两个数组的代码在哪里。您发布的代码是比较两个 NSStrings,rt?
  • 对不起我的错误,它与 NSString 比较

标签: iphone ios objective-c ios6


【解决方案1】:

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 中可用,该对象将在数组中过滤。

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

【讨论】:

    猜你喜欢
    • 2012-07-16
    • 1970-01-01
    • 1970-01-01
    • 2011-09-01
    • 2013-03-20
    • 2012-08-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多