基本的にオブジェクトを内部に配置できるMacのように、フォルダーのように機能するコアデータと別のフォルダーのエンティティを作成しようとしています。現在、フォルダーがあり、個々のブックマーク (別のエンティティ) とブックマークをフォルダーに入れることができますが、フォルダーを別のフォルダーに入れることができません。
これが私のNSFetchedResultsControllerです。
- (NSFetchedResultsController *)fetchedResultsController
{
if (_fetchedResultsController != nil) {
return _fetchedResultsController;
}
NSFetchRequest *fetchRequest = [[NSFetchRequest alloc] init];
// Edit the entity name as appropriate.
NSEntityDescription *entity = [NSEntityDescription entityForName:@"Bookmark" inManagedObjectContext:self.context];
[fetchRequest setEntity:entity];
[NSFetchedResultsController deleteCacheWithName:@"Folder"];
NSPredicate *pred = [NSPredicate predicateWithFormat:@"folder == %@", self.folder];
[fetchRequest setPredicate:pred];
// Set the batch size to a suitable number.
[fetchRequest setFetchBatchSize:20];
// Edit the sort key as appropriate.
NSSortDescriptor *sortDescriptor = [[NSSortDescriptor alloc] initWithKey:@"title" ascending:YES];
NSArray *sortDescriptors = @[sortDescriptor];
[fetchRequest setSortDescriptors:sortDescriptors];
// Edit the section name key path and cache name if appropriate.
// nil for section name key path means "no sections".
NSFetchedResultsController *aFetchedResultsController = [[NSFetchedResultsController alloc] initWithFetchRequest:fetchRequest managedObjectContext:self.context sectionNameKeyPath:nil cacheName:@"Folder"];
aFetchedResultsController.delegate = self;
self.fetchedResultsController = aFetchedResultsController;
NSError *error = nil;
if (![self.fetchedResultsController performFetch:&error]) {
// Replace this implementation with code to handle the error appropriately.
// abort() causes the application to generate a crash log and terminate. You should not use this function in a shipping application, although it may be useful during development.
NSLog(@"Unresolved error %@, %@", error, [error userInfo]);
abort();
}
return _fetchedResultsController;
}
NSEntityDescription Entity がNSEntityDescription *entity = [NSEntityDescription entityForName:@"Folder" inManagedObjectContext:self.context];
エラーでクラッシュする場合、
*キャッチされない例外 'NSInvalidArgumentException' が原因でアプリを終了しています。理由: 'キーパス フォルダーがエンティティに見つかりません'。
どうすればこれを修正できますか? 私はこの問題に困惑しています。
Folder エンティティには、ブックマーク エンティティとの対多関係があり、ブックマーク エンティティには、title、url という属性があります。フォルダには、title、displayOrder、isFolder という属性があります。