2012-05-08 9 views
0

属性私は実体を持っているが2つの属性カーと呼ばれます。コアデータがテーブルビューで結果をカウントして表示し

私は、データベース内のいくつかの車を持っている:

:ホンダシビック

:ブルー

:VWゴルフ

:B LUE

:ルノー・トゥインゴ

:レッド

:シボレーカマロ

:ホワイト

今、私がする必要が各車の車数はであり、の結果はUITableViewに表示されます。

ので、例えば、テーブルビューでなければなりません:

ブルー(2)

レッド(1)

ホワイト(1)

ことを想像してみて約70種類の色があります。

多くのWebサイトやCore Dataの書籍を検索しましたが、これが可能かどうかはまだ分かりません。

可能ですか?可能であれば、それを行う方法?

答えて

1

これらは単純なフェッチです。実際には、NSFetchedResultsControllerを使用し、セクション名として "color"を設定すると、すべてのオブジェクトの配列が返され、色でグループ化されます。

今のような...

NSFetchRequest *fetchRequest = [NSFetchRequest fetchRequestWithEntityName:@"Car"];  
NSSortDescriptor *sectionSortDescriptor = [[NSSortDescriptor alloc] initWithKey:@"color" ascending:YES]; 
NSSortDescriptor *nameSortDescriptor = [[NSSortDescriptor alloc] initWithKey:@"name" ascending:YES]; 
NSArray *sortDescriptors = [NSArray arrayWithObjects:sectionSortDescriptor, nameSortDescriptor, nil]; 
[fetchRequest setSortDescriptors:sortDescriptors]; 

NSFetchedResultsController *fetchedResultsController = [[NSFetchedResultsController alloc] initWithFetchRequest:fetchRequest managedObjectContext:self.managedObjectContext sectionNameKeyPath:@"color" cacheName:@"CarCache"]; 
fetchedResultsController.delegate = self; 
self.fetchedResultsController = fetchedResultsController; 

NSError *error = nil; 
if (![self.fetchedResultsController performFetch:&error]) { 
    // Handle error... 
} 

何か、あなたのデータは、セクションに分割色につき1項、およびそこでの値は名前でソートされます。データを取得するには、FRCのセクションプロパティを見てください。

0

私は以前の答えはかなり正しいとは思わない。あなたのフェッチ結果コントローラでは、あなたはいつも物事を行うが、

  • あなたはnameによってソートColor
  • にあなたのエンティティをフェッチ(つまり、色の名前になります)cellForRowAtIndexPath:

あなたが構築表示する適切な文字列

Color *color = [self.fetchedResultsController objectAtIndexPath:indexPath]; 
cell.textLabel.text = [NSString stringWithFormat:@"%@ (%d)", 
    color.name, color.cars.count]; 

ここで、carsは、色から自動車への逆の関係の名前です。

関連する問題