我在代码中收到此行的sigbart错误:
NSFetchedResultsController *aFetchedResultsController = [[NSFetchedResultsController alloc] initWithFetchRequest:fetchRequest managedObjectContext:self.managedObjectContext sectionNameKeyPath:nil cacheName:@"ViewTwo"];
这是方法:
- (NSFetchedResultsController *)fetchedResultsController
{
if (__fetchedResultsController != nil) {
return __fetchedResultsController;
}
// Set up the fetched results controller.
// Create the fetch request for the entity.
NSFetchRequest *fetchRequest = [[NSFetchRequest alloc] init];
// Edit the entity name as appropriate.
NSEntityDescription *entity = [NSEntityDescription entityForName:@"MyData" inManagedObjectContext:self.managedObjectContext];
[fetchRequest setEntity:entity];
// Set the batch size to a suitable number.
[fetchRequest setFetchBatchSize:20];
// 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.managedObjectContext sectionNameKeyPath:nil cacheName:@"ViewTwo"];
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;
}
但这是一个奇怪的错误,因为在控制台中没有给我任何解释,所以我无法理解我做错了什么。
答案 0 :(得分:5)
NSFetchedResultsController需要排序描述符和托管对象上下文。你没有提供排序描述符,所以你必须给它。
答案 1 :(得分:0)
奇怪的是,SIGBART没有输出,请尝试运行指令(按步骤查看是否输出。
您需要做的是检查您发送给方法的每个元素(通过记录),在调用执行之前,其中一个元素实际上可能是nil或被解除引用。
答案 2 :(得分:0)
您可以修改xcdatamodled,但不会在设备上重新安装您的应用。
只需删除您设备上构建的应用并重新构建,一切都会正常。
这就是苹果所说的:
abort()会导致应用程序生成崩溃日志并终止。您不应在运输应用程序中使用此功能,尽管它在开发期间可能很有用。
此处出现错误的典型原因包括: *持久性商店无法访问; *持久性存储的架构与当前的托管对象模型不兼容。 检查错误消息以确定实际问题是什么。
如果无法访问持久性存储,则文件路径通常有问题。通常,文件URL指向应用程序的资源目录而不是可写目录。
如果在开发过程中遇到架构不兼容错误,可以通过以下方式降低频率: *只需删除现有商店:
[[NSFileManager defaultManager] removeItemAtURL:storeURL error:nil]
通过将以下字典作为options参数传递来执行自动轻量级迁移:
[NSDictionary dictionaryWithObjectsAndKeys:[NSNumber numberWithBool:YES], NSMigratePersistentStoresAutomaticallyOption, [NSNumber numberWithBool:YES], NSInferMappingModelAutomaticallyOption, nil];
轻量级迁移仅适用于一组有限的架构更改;有关详细信息,请参阅“核心数据模型版本控制和数据迁移编程指南”。