删除重复的对象从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数据存储中有重复条目。
谢谢,非常感谢.both适用于我..... :) –
您的实际问题(重复条目)仍然存在。 – shallowThought