2013-07-16 4 views
0

Я запутался, как сравнить два NSMutableArray.Here мой код. Если элемент массива уже существует в локальном, он примет его, если взять массив по умолчанию. Как это сделать ?ios сравнить два 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.

+1

Возможно, это просто я ... что именно вы пытаетесь сравнить и где вы пытаетесь его использовать? Не возражаете ли вы дать пример, чтобы помочь решить проблему? – Dan

+0

Но где код для сравнения двух массивов. Код, который вы опубликовали, сравнивает два NSStrings, rt? – HRM

+0

Извините, моя ошибка, это по сравнению с NSString –

ответ

0

Джейсон, я не очень уверен в ваших требованиях, но согласно я понимаю, предикат - это ответ на ваш вопрос, который очень полезен для поиска. Предикаты блоков сделали его очень простым в использовании.

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 будет доступен в свойстве USERDEF2 в KP_PERSON объекта myPersonArray, который будет находиться в отфильтрованный в массиве.

Я думаю, что это может решить вашу проблему.

Смежные вопросы