我的问题是删除重复值,保持与Array具有的相同顺序。 像我的数组格式是: -
(
{
author = "";
content = "After almost";
"document_name" = "20150108";
"news_id" = 280;
},
{
author = "";
content = "Content";
"document_name" = "20150108"
"news_id" = 282;
}
);
其实我从Core Data获取这个数组,我知道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循环和块之间没有太大区别。所以我不能使用它,因为我有数千个数据,并不好把循环检查并从数组中删除数据。
所以任何人都知道更好的解决方案,删除重复的对象,并保持与字典中的所有其他字段排序,请告诉我。
答案 0 :(得分:0)
对于您的方法,请使用NSOrderedSet
代替NSSet
:
NSArray *arrayWithNoDuplicates = [NSOrderedSet orderedSetWithArray:papersObject.paperSubject].array;
如果您想获得所有字段,只需删除
即可 [request setPropertiesToFetch:@[@"news_id"]];
我觉得你的问题是,你实际上在你的Cora数据商店中有重复的条目。