У меня возникли проблемы (понимание вопрос, если честно) с NSFetchedResultsController и новыми отношениями NSOrderedSet доступны в прошивке 5.NSFetchedResultsController и NSOrderedSet отношение
У меня есть следующие данные-модель (хорошо, мои настоящие один не является выдвижной ящик и носок), но это служит в качестве простого примера:
ящик и носок оба NSManagedObjects в Core Data/модель магазине. На 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;
}
Когда я запускаю это, я получаю следующее errror: *** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: 'to-many key not allowed here'
Это имеет смысл для меня, как и отношения является NSOrderedSet
и ни один объект для сравнения для сортировки целей.
Я хочу достичь Socks
, чтобы появиться в UITableView
в порядке, указанном в разделе socks
. Я действительно не хочу иметь порядок сортировки, но NSFetchedResultsController
, который является отличным компонентом, настаивает на том, что он должен быть одним. Как я могу сказать, что он использует порядок носков на объекте Ящика. Я не хочу, чтобы в таблице отображались объекты Drawer.
Примечание: Я использую это только в приложении iOS5, поэтому доступны упорядоченные отношения.
Любой, кто может предложить мне в любом направлении, был бы очень благодарен. Спасибо за ваше время.
Редактировать: Так табличное представление, что носки этого дисплея делают это только для одного ящика. Я просто хочу, чтобы представление таблицы соблюдало порядок, в котором содержатся отношения с носками. Я не уверен, что установить критерии сортировки, чтобы убедиться, что это происходит.
Дамьен, вы, кажется, решили это. Когда вы говорите «в порядке, указанном в отношениях« носки »- как вы собираетесь определять порядок отношений? В редакторе я могу просто увидеть флажок (упорядоченный или не заказанный), но ничего не контролировать критерии сортировки. – jhabbott
@jhabbott. Когда вы указываете упорядоченное соотношение (используя флажок), тогда связь представляется NSOrderedSet. Затем вы можете использовать обычные упорядоченные методы для управления порядком. – Damien
Итак, теперь я начинаю использовать сгенерированный метод 'insertObject: inSocksAtIndex:', но я получаю исключение исключенного исключения. Я думал, что контекст управляемого объекта добавит это во время выполнения? – jhabbott