2013-11-17 2 views
4

У меня есть один NSObject со свойствами следующимУдалить дубликаты объектов из свойства объекта NSMutableArray?

@property (nonatomic, retain) NSString * destinationid; 
@property (nonatomic, retain) NSString * destinationname; 
@property (nonatomic, retain) NSString * assetid; 
@property (nonatomic, retain) NSString * assetname; 
@property (nonatomic, retain) NSString * assetdescription; 

Здесь я сохраню это в NSMutableArray.

Данные, которые я получаю с сервера, содержат одно имя DestinationName, но другие другие свойства.

Я хочу проверить, если одноименное имя объекта уже добавлено в NSMutableArray, не добавляйте его снова.

Я попытался пользователя innner петли, но не использовать :(

Спасибо

+0

Можете ли вы сказать, что случилось с innerloops .please показать свой код –

+0

Мне не удалось создать логику для него – Duaan

ответ

14

Вот одно решение:

NSArray *originalArray = ... // original array of objects with duplicates 
NSMutableArray *uniqueArray = [NSMutableArray array]; 
NSMutableSet *names = [NSMutableSet set]; 
for (id obj in originalArray) { 
    NSString *destinationName = [obj destinationname]; 
    if (![names containsObject:destinationName]) { 
     [uniqueArray addObject:obj]; 
     [names addObject:destinationName]; 
    } 
} 
0

Эта функция должна сделать работу: пример

BOOL contains(id object, NSMutableArray *array) 
{ 
    for (id array in yourArray) 
     if ([object.destinationname isEqualToString:yourObject.destinationname]) 
      return YES; 
    return NO; 
} 

Использование:

if (!contains(object, array)) 
    [array addObject:object]; 
1

Один из способов сделать это, чтобы создать новый массив, который содержит только имена назначения с другого массива, а также проверить, если имя с вашего сервера содержится там:

NSArray *names = [self.mut valueForKey:@"destinationname"]; 
    if (![names containsObject:destName]) { 
     [self.mut addObject:newObjectFromServer]; 
    } 

mut - это имя моего изменяемого массива, а destName - это имя назначения в объекте, который вы получаете с сервера.

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