2016-11-18 3 views
0

あらかじめ間違いがある場合には、謝罪のための私の最初の質問。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]; 

について知っています。

は、と私は

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

が、同じ記事にenumerateObjectsUsingBlock

見つかっ検索しながらループとブロックの間には大きな違いがないことを言います。だから私はそれを使用することはできませんので、私は何千ものデータを持っていて、ループをチェックして配列からデータを取り除くのは良くありません。

誰でも、重複したオブジェクトを削除し、辞書内の他のすべてのフィールドと並べ替えることをお勧めします。私に教えてください。あなたのアプローチのために

答えて

0

、代わりにNSSetNSOrderedSetを使用します。

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

あなたはすべてのフィールドを取得したい場合は、単に

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

を削除するあなたの問題は私には思える、あなたが実際にことあなたのCora Data Storeにの重複したエントリがあります。

+0

ありがとう、ありがとうございました。私のために働く..... :) –

+0

あなたの実際の問題(重複したエントリ)はなお続きます。 – shallowThought

関連する問題