删除重复的对象从NSMutableArray与保持排序和所有其他字段

问题描述:

它的我的第一个问题提前为任何错误道歉。删除重复的对象从NSMutableArray与保持排序和所有其他字段

我的问题是删除重复的值,保持相同的顺序,数组有。 就像我阵列格式为: -

( 
    { 
     author = ""; 
     content = "After almost"; 
     "document_name" = "20150108"; 
     "news_id" = 280; 
    }, 
    { 
     author = ""; 
     content = "Content"; 
     "document_name" = "20150108" 
     "news_id" = 282; 
    } 
); 

其实即时得到从核心数据这阵,我知道像SetPropertiesToFetch: -

[request setResultType:NSDictionaryResultType]; 
[request setReturnsDistinctResults:YES]; 
[request setPropertiesToFetch:@[@"news_id"]]; 

但是从这个我只得到news_id场,但我需要的所有其他领域。 也是我知道的NSSet

NSArray *arrayWithNoDuplicates = [[NSSet setWithArray:papersObject.paperSubject] allObjects]; 

由于这个我失去了我的排序顺序,我在谓词一样。

,并同时寻找,我发现enumerateObjectsUsingBlock

NSMutableArray *filteredManagers = [NSMutableArray array]; 
    [managers enumerateObjectsUsingBlock:^(Manager manager, NSUInteger idx, BOOL stop) { 
    if (![filteredManagers containsObject:manager]) { 
     [filteredManagers addObject:manager]; 
    } 
    }]; 

但在同一篇文章中说,有for循环和块之间没有太大的区别。所以我不能使用它,因为我有数以千计的数据,它不好把循环检查并从数组中删除数据。

所以任何人都知道更好的解决方案,删除重复的对象,并保持排序与字典中的所有其他领域,请让我知道。

对于你的方法,使用NSOrderedSet代替NSSet

NSArray *arrayWithNoDuplicates = [NSOrderedSet orderedSetWithArray:papersObject.paperSubject].array; 

如果你想获得的所有领域,只需删除

[request setPropertiesToFetch:@[@"news_id"]];

您的问题,在我看来,你实际上虽然在你的Cora数据存储中有重复条目。

+0

谢谢,非常感谢.both适用于我..... :) –

+0

您的实际问题(重复条目)仍然存在。 – shallowThought