【发布时间】:2016-09-24 08:27:35
【问题描述】:
我正在尝试针对这种情况设计我的 CoreData 模型:
我们有 Song 对象,它与一些 List 有一对多关系。
每个List 都有name 属性并且还与Song 有一对多关系
需要这些多对多关系,因为一个Song 可以同时出现在每个List 中。
我需要使用NSFetchedResultsController 以某种方式获取按这些标题(List 的名称)分组的Songs 列表(因为用户可能有 10,000 首歌曲,我不想将其存储在 NSArray 的某个位置)。
当我尝试将 sectionNameKeyPath: 设置为某个值时,例如@"List.name" 我有一个错误“不允许多对多关系”,当然这是有道理的。
所以我需要帮助如何设计我的模型,以便能够拥有 Songs 和一些 Lists,如“历史”/“下一场比赛”等,并能够使用 @987654337 获取所有数据@。
任何帮助表示赞赏。如果我的解释不清楚,请询问更多信息。
我的部分代码:
- (void)initFetch {
NSFetchRequest *fetchRequest = [[NSFetchRequest alloc] initWithEntityName:@"Song"];
[fetchRequest setSortDescriptors:@[[NSSortDescriptor sortDescriptorWithKey:@"index" ascending:YES]]];
fetchRequest.predicate = [NSPredicate predicateWithFormat:@"ANY list.@count != 0"];
fetchRequest.fetchBatchSize = 20;
self.fetchedResultsController = [[NSFetchedResultsController alloc] initWithFetchRequest:fetchRequest managedObjectContext:self.context sectionNameKeyPath:@"name" cacheName:nil];
[self.fetchedResultsController setDelegate:self];
NSError *error = nil;
[self.fetchedResultsController performFetch:&error];
if (error) {
NSLog(@"Unable to perform fetch.");
NSLog(@"%@, %@", error, error.localizedDescription);
}
}
【问题讨论】:
标签: ios objective-c core-data nsfetchedresultscontroller