私はそのようなコアデータモデルを持っています:
ParentObject <--->> ChildObject
と の両方ParentObject
に次ChildObject
のような属性がありますlevelNumber
。
typedef enum {
Primary,
Secondary,
Tertiary
} LevelNumber;
ParentObject と childObject の両方でレベル番号を int から文字列に変換するメソッドもあります。
-(void) levelString
{
switch(self.levelNumber)
{
case Primary: return @"Primary";
case Secondary: return @"Secondary";
case Tertiary: return @"Tertiary";
default: return @"Error";
}
}
これで、テーブルビューに FetchedResultsController があり、ParentObject
. セクション名で取得しようとしているのは次のとおりです。
ParentObject
がSecondary
またはの場合Tertiary
、セクション名をSecondary
またはとして表示しTertiary
ます。ParentObject
がまたはPrimary
のいずれかである場合は、セクション名を または として表示ChildObjects
します。Secondary
Tertiary
Secondary
Tertiary
ParentObject
とすべてが のChildObjects
場合、Primary
セクション名を次のように表示しますPrimary
の を調べるだけでよい場合は、次のような非常に簡単levelNumber
ですParentObject
-
NSFetchRequest *request = [NSFetchRequest fetchRequestWithEntityName:@"ParentObject"];
NSSortDescriptor *levelNumSD = [NSSortDescriptor sortDescriptorWithKey:@"levelNumber" ascending:YES];
request.sortDescriptors = [NSArray arrayWithObjects:levelNumSD, nil];
self.fetchedResultsController = [[NSFetchedResultsController alloc] initWithFetchRequest:request
managedObjectContext:myContext
sectionNameKeyPath:@"levelString"
cacheName:nil];
FRC の制限は、SortDescriptor の結果が表示されるのと同じ順序で結果を返さなければならないことであることを理解しています。ChildObject
ここにもチェックを組み込むにはどうすればよいですか。それは新しい種類の SortDescriptor でしょうか、それとも何か他のものでしょうか?