私がやりたいことは、x 行ごとに NSFetchedResultsController セクションを作成することです。
私は一時的なプロパティを作成しようとしました。これは、次のようにインデックスに基づいてセクションを提供します。
- (NSNumber*)section
{
[self willAccessValueForKey:@"section"];
NSManagedObjectContext* context = [(AppDelegate*)[[UIApplication sharedApplication] delegate] managedObjectContext];
NSFetchRequest* fetchRequest = [NSFetchRequest fetchRequestWithEntityName:@"Animal"];
[fetchRequest setSortDescriptors:[NSArray arrayWithObject:[NSSortDescriptor sortDescriptorWithKey:@"title" ascending:YES]]];
NSArray* array = [context executeFetchRequest:fetchRequest error:NULL];
int order = [array indexOfObject:self];
NSNumber *tmpValue = [NSNumber numberWithInt:order / 3];
[self didAccessValueForKey:@"section"];
return tmpValue;
}
すべてのオブジェクトでこの関数をトリガーすることにより、viewcontroller がセクションを更新するようにしました。
-(void)refreshSection
{
NSManagedObjectContext* context = [(AppDelegate*)[[UIApplication sharedApplication] delegate] managedObjectContext];
NSFetchRequest* fetchRequest = [NSFetchRequest fetchRequestWithEntityName:@"Animal"];
[fetchRequest setSortDescriptors:[NSArray arrayWithObject:[NSSortDescriptor sortDescriptorWithKey:@"title" ascending:YES]]];
NSArray* array = [context executeFetchRequest:fetchRequest error:NULL];
int order = [array indexOfObject:self];
[self setSection:[NSNumber numberWithInt:order / 3]];
}
このソリューションは機能しますが、オブジェクトの大きなセットでは効率的ではありません。
基本的に、私が達成したいのはこれです:
セクション 0:
a
b
d
セクション 1:
e
c を追加した場合:
セクション 0:
a
b
c
セクション 1:
d
e
これを行うための他のよりエレガントな方法はありますか?
ありがとう..