Objective c 目标C:我能';t配置和使用NSPersistentStoreCoordinator

Objective c 目标C:我能';t配置和使用NSPersistentStoreCoordinator,objective-c,nspersistentstore,Objective C,Nspersistentstore,通过融合我在这个论坛上读到的一些东西和我在苹果文档中找到的一些其他东西,我试图获得一个运行良好的NSManagedObjectContext。因此,我编写了以下代码: NSManagedObjectModel *managedObjectModel = [NSManagedObjectModel mergedModelFromBundles:[NSArray arrayWithObject:[NSBundle mainBundle]]]; NSPersistentStoreCo

通过融合我在这个论坛上读到的一些东西和我在苹果文档中找到的一些其他东西,我试图获得一个运行良好的NSManagedObjectContext。因此,我编写了以下代码:

NSManagedObjectModel *managedObjectModel = [NSManagedObjectModel mergedModelFromBundles:[NSArray arrayWithObject:[NSBundle mainBundle]]]; NSPersistentStoreCoordinator *persistentStoreCoordinator = [[NSPersistentStoreCoordinator alloc] initWithManagedObjectModel:managedObjectModel]; NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentationDirectory, NSUserDomainMask, YES); NSString *basePath = ([paths count]>0 ? [paths objectAtIndex:0] : nil); NSURL *storeUrl = [NSURL fileURLWithPath:[basePath stringByAppendingPathComponent:@"meetSigns.sqlite"]]; NSError *persistentError; if (![persistentStoreCoordinator addPersistentStoreWithType:NSSQLiteStoreType configuration:nil URL:storeUrl options:nil error:&persistentError]) { NSLog([persistentError description]); } NSManagedObjectContext *managedObjectContext = [[NSManagedObjectContext alloc] init]; [managedObjectContext setPersistentStoreCoordinator:persistentStoreCoordinator]; 如何创建这个.sqlite文件?我可以从数据模型自动生成它吗?我尝试使用项目名称和数据模型名称,在这两种情况下都添加了.sqlite扩展名,但我得到了相同的错误

由于这个错误,我也得到了以下结果:

Terminating app due to uncaught exception 'NSInternalInconsistencyException', reason: 'This NSPersistentStoreCoordinator has no persistent stores. It cannot perform a save operation.' 由于未捕获异常“NSInternalInconsistencyException”,正在终止应用程序,原因是:“此NSPersistentStoreCoordinator没有持久存储。它无法执行保存操作。' 你能告诉我我错在哪里吗?你能告诉我如何解决混合.sqlite文件的问题吗


感谢您的帮助

您在调用
NSSearchPathForDirectoriesInDomains
时使用了
NSDocumentationDirectory
,但在调用
NSSearchPathForDirectoriesInDomains
时,您使用的应该是
NSDocumentationDirectory

,但是它应该是
NSDocumentDirectory

它似乎可以工作,谢谢,我能再问你一个问题吗?也许,我应该永远创建一次上下文。我看到一些人在应用程序的委托类中创建它,并通过根控制器将它传递给其他控制器。我如何使用上面报告的代码来实现这一点?我的应用程序由根控制器控制的部分组成;然后,在控制器链的末端,用户被驱动到不属于该链的新控制器。从那一刻起,在需要时从情节提要加载独立的控制器。在这种情况下,如何将上下文从一个控制器传递到另一个控制器?谢谢,通常创建一次。我会考虑使用一个单例来充当数据控制器。那么,将上面的代码复制粘贴到AppDelegate中的某个位置就足够了吗?在哪个功能中?Singleton是我在web上多次发现的东西,也许是时候了解它了。应用程序委托不应该用于此,它应该只用于应用程序级别的事情。拥有数据模型不是其中的一部分,所以应该创建一个特殊的控制器。所以,在第一个视图控制器中创建一次,当应用程序转到第一个控制器或用户提交注册时,这是一个好主意吗?这似乎可行,谢谢。我可以再问你一个问题吗?也许,我应该永远创建一次上下文。我看到一些人在应用程序的委托类中创建它,并通过根控制器将它传递给其他控制器。我如何使用上面报告的代码来实现这一点?我的应用程序由根控制器控制的部分组成;然后,在控制器链的末端,用户被驱动到不属于该链的新控制器。从那一刻起,在需要时从情节提要加载独立的控制器。在这种情况下,如何将上下文从一个控制器传递到另一个控制器?谢谢,通常创建一次。我会考虑使用一个单例来充当数据控制器。那么,将上面的代码复制粘贴到AppDelegate中的某个位置就足够了吗?在哪个功能中?Singleton是我在web上多次发现的东西,也许是时候了解它了。应用程序委托不应该用于此,它应该只用于应用程序级别的事情。拥有数据模型不是其中的一部分,所以应该创建一个特殊的控制器。所以,当应用程序转到第一个控制器或用户提交注册时,在第一个视图控制器中创建一次是一个好主意吗? Terminating app due to uncaught exception 'NSInternalInconsistencyException', reason: 'This NSPersistentStoreCoordinator has no persistent stores. It cannot perform a save operation.'