- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
错误信息:
persistentStoreCoordinator is nil ??
persistentStoreCoordinator is nil ??
persistentStoreCoordinator is nil ??
persistentStoreCoordinator is nil ??
persistentStoreCoordinator is nil ??
persistentStoreCoordinator is nil ??
persistentStoreCoordinator is nil ??
persistentStoreCoordinator is nil ??
persistentStoreCoordinator is nil ??
------------ persistentStoreCoordinator is nil ??
- (void)updateGroupTableStatus:(TmpGroupMessageInfo*)info {
NSManagedObjectContext *ctx = [self createPrivateObjectContext];
[ctx performBlock:^{
NSPredicate *cdt = [NSPredicate predicateWithFormat:@"groupId == %@ && tableId == %@", info.groupId, info.tableId];
NSFetchRequest *fetchRequest = [GroupMessageInfo makeRequest:ctx predicate:cdt orderby:nil offset:0 limit:1];
NSArray *array = [ctx executeFetchRequest:fetchRequest error:nil];
if ([array count] > 0) {
for (GroupMessageInfo *msg in array) {
msg.lastingTime = [NSNumber numberWithLongLong:0];
}
[ctx save:nil];
[self.managedObjectContext performBlock:^{
[self.managedObjectContext save:nil];
}];
}
}];
}
+ (NSFetchRequest*)makeRequest:(NSManagedObjectContext*)ctx predicate:(NSPredicate*)predicate orderby:(NSArray*)orders offset:(int)offset limit:(int)limit {
NSString *className = [NSString stringWithUTF8String:object_getClassName(self)];
NSFetchRequest *fetchRequest = [[NSFetchRequest alloc] init];
[fetchRequest setEntity:[NSEntityDescription entityForName:className inManagedObjectContext:ctx]];
if (predicate) {
[fetchRequest setPredicate:predicate];
}
if (orders!=nil) {
[fetchRequest setSortDescriptors:orders];
}
if (offset>0) {
[fetchRequest setFetchOffset:offset];
}
if (limit>0) {
[fetchRequest setFetchLimit:limit];
}
return fetchRequest;}
- (NSManagedObjectContext*)createPrivateObjectContext {
if (_privateManagedObjectContext == nil) {
_privateManagedObjectContext = [[NSManagedObjectContext alloc] initWithConcurrencyType:NSPrivateQueueConcurrencyType];
[_privateManagedObjectContext setParentContext:self.managedObjectContext];
}
return _privateManagedObjectContext;
}
- (NSManagedObjectContext *)managedObjectContext {
if (_managedObjectContext != nil) {
return _managedObjectContext;
}
NSPersistentStoreCoordinator *coordinator = [self persistentStoreCoordinator];
if (coordinator != nil) {
_managedObjectContext = [[NSManagedObjectContext alloc] initWithConcurrencyType:NSMainQueueConcurrencyType];
[_managedObjectContext setPersistentStoreCoordinator:coordinator];
}
return _managedObjectContext;
}
// Returns the managed object model for the application.
// If the model doesn't already exist, it is created from the application's model.
- (NSManagedObjectModel *)managedObjectModel {
if (_managedObjectModel != nil) {
return _managedObjectModel;
}
NSURL *modelURL = [[NSBundle mainBundle] URLForResource:@"PokerSkyModel" withExtension:@"momd"];
_managedObjectModel = [[NSManagedObjectModel alloc] initWithContentsOfURL:modelURL];
return _managedObjectModel;
}
// Returns the persistent store coordinator for the application.
// If the coordinator doesn't already exist, it is created and the application's store added to it.
- (NSPersistentStoreCoordinator *)persistentStoreCoordinator {
if (_persistentStoreCoordinator != nil) {
return _persistentStoreCoordinator;
}
......
_persistentStoreCoordinator = [[NSPersistentStoreCoordinator alloc] initWithManagedObjectModel:[self managedObjectModel]];
if (![_persistentStoreCoordinator addPersistentStoreWithType:NSSQLiteStoreType configuration:nil URL:storeURL options:optionsDictionary error:&error]) {
NSLog(@"Unresolved error %@, %@", error, [error userInfo]);
[self cleanData];
abort();
}
return _persistentStoreCoordinator;
}
最佳答案
我遇到了与您完全相同的崩溃。最后我发现初始化NSManagedObjectContext
的persistentStoreCoordinator
不能放在后台线程!
在你的例子中,你在 11 号线程做了一些 CoreData 操作,这显然不是Main Thread。如果这是你第一次访问你的 CoreData
,然后 persistentStoreCoordinator
将设置在导致崩溃的 11 号后台线程。您还可以通过将这些代码 appDidFinishLaunch
放在 AppDelegate
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{
// your CoreData operation here
}
// ...
}
解决方法很简单,只要保证CoreData的初始化(或者第一次使用)在Main Thread即可,如果不是,使用GCD切换到它即可
dispatch_async(dispatch_get_main_queue(), 0), ^{
// your CoreData initialize here
}
关于ios - nil 不是用于搜索实体名称 'GroupMessageInfo' 的合法 NSPersistentStoreCoordinator,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38698235/
我最近从 xcode 3.x 更新到 4.2,当我在 4.2 中运行应用程序时,我遇到了核心数据问题。我还更新到了 iOS 5,所以问题可能就在那里,我不太确定。 这些应用程序在 3.x 中运行良好,
我正在开发一个使用 Core Data 的 iPhone 应用程序。该应用程序调用 Web 服务,解析生成的 XML 文件,然后在我的应用程序中创建或修改 Core Data 对象。我已经处理了 We
每次我更改应用程序的核心数据模型时,它都会在下次启动时生成不可恢复的错误:“用于打开商店的模型与用于创建商店的模型不兼容”。 我发现避免这种情况的唯一可靠方法是手动删除应用程序并让 Xcode 重新安
在 iOS 应用程序中,我想将 NSPersistentStoreCoordinator 与 NSIncrementalStore 子类一起使用,用于从 REST API 获取数据,但也与 SQLit
我有一个名为 TestProject 的 xcode4 项目,我正在尝试将 CoreData 添加到其中。我添加了一个包含一些实体的数据模型(名为 TestDataModel),并为这些实体创建了 N
我目前已经为我的 iOS 应用程序的当前版本下载了我的崩溃日志。我看到了一条我无法理解的奇怪消息: [NSPersistentStoreCoordinator(_NSInternalMethods)
我目前正在使用 iCloud 和 CoreData 在我的应用程序中同步数据,因此每次触发通知时,我都会更新我的本地数据数组。我遇到的问题是我的数据集越来越大,我不想每次有新通知时都更新整个数据集。
我正在考虑使用两个 persistent store coordinator,PSC1 将仅读取 一个 sqlite DB,PSC2 将读取和写入 DB。有时 PSC1 会从 DB重新加载内容。 你觉
来自 Stanford 193P 的核心数据讲座iTunes 上的 iPhone 类(class),讲师在不使用 NSPersistentStoreCoordinator 的情况下使用 Core Da
我正在尝试在一个项目上使用 Core Data,该项目的代码改编自 iOS 编程:The Big Nerd Ranch Guide(第三版)。打开 SQLite 文件会导致异常,无论阅读多少文档或挖掘
创建persistentStoreCoordinator时,对addPersistentStoreWithType的调用崩溃。使用 Zombies 进行调试会发现释放错误 -[NSRelationsh
我有一个通过 UIManagedObjectDocument 使用核心数据的应用程序。我正在尝试使用加密核心数据 ( https://github.com/project-imas/encrypted
我知道其他开发者也经常问过这个问题。 我正在使用核心数据。 在上次运行代码时,它工作正常,但今天当我构建并运行应用程序时,我发现了此错误。 由于未捕获的异常“NSInvalidArgumentExce
我刚刚设置了一台使用 Xcode 进行开发的新机器,当我打开、构建并运行一个现有的核心数据项目(它在我的旧机器上仍然运行良好)时,我收到“无法创建 NSPersistentStoreCoordinat
由于我遇到的崩溃,我正试图找到一个官方答案,类似于: nil is not a legal NSPersistentStoreCoordinator for searching for entity
我花了很多时间让我的 Core Data 模型在开发中的 iOS 应用程序中高效工作。在大多数情况下,我的一切工作都很顺利,但前几天我偶然遇到了一个独特的错误加载我的数据。我刚开始在我的 iPhone
我已经用(任务)建立了一个模型,在我理解核心数据的过程中,我做到了这一点:向上下文添加三个项目: NSManagedObjectModel *m = [NSManagedObjectModel mer
我有一个运行完美的 coreData 数据模型文件。由于一些特殊要求,我删除旧的数据模型文件并创建了另一个具有完全相同实体的数据模型文件。与之前的数据模型相比,实体没有变化。我已将其作为不同 bund
我已阅读I keep on getting "save operation failure" after any change on my XCode Data Model 错误代码: This
我正在使用 MagicalRecord, 这就是我设置 coreData 堆栈的方式 - (BOOL)application:(UIApplication *)application didFinis
我是一名优秀的程序员,十分优秀!