NSFetchRequest の setReturnsDistinctResults に YES を渡せばよい。
具体的なコードは、以下の通り
今回は例として、name が重複しているデータから重複を取り除いてデータを取得する処理を行う。
// NSFetchRequest は、検索条件などを保持するオブジェクト // 後続処理で、このインスタンスに色々と検索条件を設定する。 NSFetchRequest *fetchRequest = [[NSFetchRequest alloc] init]; // 検索対象エンティティを指定する。 NSEntityDescription *entity = [NSEntityDescription entityForName:@"Theme" inManagedObjectContext:_managedObjectContext]; [fetchRequest setEntity:entity]; // ソートを設定 NSSortDescriptor *sortDescriptor = [[NSSortDescriptor alloc] initWithKey:@"name" ascending:YES]; NSArray *sortDescriptors = @[sortDescriptor]; [fetchRequest setSortDescriptors:sortDescriptors]; // コードで絞り込んだ値を取得する NSDictionary *entityProperties = [entity propertiesByName]; [fetchRequest setPropertiesToFetch:[NSArray arrayWithObject:[entityProperties objectForKey:@"name"]]]; [fetchRequest setReturnsDistinctResults:YES]; // ← ここで指定する [fetchRequest setResultType:NSDictionaryResultType]; NSError *error; NSArray *fetchResults = [_managedObjectContext executeFetchRequest:fetchRequest error:&error]; if (fetchResults == nil) { // Handle the error. NSLog(@"fetch error."); }これで、NSArray に重複が除去されたデータが格納されている。
0 件のコメント:
コメントを投稿