У меня возникла проблема (если честно), с NSFetchedResultsController и новыми отношениями NSOrderedSet, доступными в iOS 5.
У меня есть следующая модель данных (хорошо, мой реальный не ящик и носок!), но это служит в качестве простого примера:
Ящик и носок - это NSManagedObjects в модели/хранилище основных данных. В Drawer
отношение socks
- отношение упорядочено к-многим к Sock
. Идея состоит в том, что носки находятся в ящике в определенном порядке. В Sock
отношение Drawer
является обратным отношению socks
.
В UIViewController я рисую UITableView на основе этих объектов. Я кормлю таблицу, используя NSFetchedResultsController
.
- (NSFetchedResultsController *)fetchedResultsController1 {
if (_fetchedResultsController1 != nil) {
return _fetchedResultsController1;
}
NSFetchRequest *fetchRequest = [[NSFetchRequest alloc] init];
NSEntityDescription *entity = [NSEntityDescription entityForName:@"Sock" inManagedObjectContext:[NSManagedObjectContext MR_defaultContext]];
[fetchRequest setEntity:entity];
NSSortDescriptor *sort = [[NSSortDescriptor alloc] initWithKey:@"drawer.socks" ascending:YES];
[fetchRequest setSortDescriptors:[NSArray arrayWithObject:sort]];
self.fetchedResultsController1 = [[NSFetchedResultsController alloc] initWithFetchRequest:fetchRequest managedObjectContext:[NSManagedObjectContext MR_defaultContext] sectionNameKeyPath:nil cacheName:@"SocksCache"];
self.fetchedResultsController1.delegate = self;
return _fetchedResultsController1;
}
Когда я запускаю это, я получаю следующее сообщение об ошибке: *** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: 'to-many key not allowed here'
Это имеет смысл для меня, поскольку отношение < <29 > , а не одна сущность для сравнения для целей сортировки.
Я хочу достичь, чтобы socks
появился в UITableView
в порядке, указанном в отношении socks
. Я действительно не хочу иметь порядок сортировки, но NSFetchedResultsController
, который является отличным компонентом, настаивает на том, что он должен быть одним. Как я могу сказать, что он использует порядок носков на объекте Ящика. Я не хочу, чтобы в таблице отображались объекты Drawer.
Примечание. Я использую это только в приложении iOS5, поэтому доступны упорядоченные отношения.
Любой, кто может предложить мне какое-либо направление, будет очень благодарен. Спасибо за ваше время.
Изменить: Таким образом, представление таблицы, отображающее носки, делает это только для одного ящика. Я просто хочу, чтобы представление таблицы соблюдало порядок, в котором содержатся отношения с носками. Я не уверен, что установить критерии сортировки, чтобы убедиться, что это происходит.