1

通过融合我在这个论坛上读到的一些东西以及我在 Apple 文档中找到的一些其他东西,我试图找到一个正常运行的 NSManagedObjectContext。所以,我写了以下代码:

    NSManagedObjectModel *managedObjectModel = [NSManagedObjectModel mergeModelFromBundles:[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 描述]);
        }

        NSManagedObjectContext *managedObjectContext = [[NSManagedObjectContext alloc] init];
        [managedObjectContext setPersistentStoreCoordinator:persistentStoreCoordinator];

我必须准确地说,一开始我的应用程序没有数据模型,所以我手动添加了它,现在我有一个 .xcdatamodeld 文件。我使用该界面用我的实体和关系填充模型。
无论如何,我找不到 .sqlite 文件,即使它在我发布的片段中是必需的。也许,因此,我收到以下错误:

Error Domain=NSCocoaErrorDomain Code=512 "The operation couldn’t be completed. (Cocoa error 512.)" UserInfo=0x74d6dd0 {reason=Failed to create file; code = 2}

如何创建这个 .sqlite 文件?我可以从数据模型中自动生成它吗?我尝试同时使用项目名称和数据模型之一,在这两种情况下都添加了 .sqlite 扩展名,但我得到了同样的错误。

由于这个错误,我也得到以下信息:

由于未捕获的异常“NSInternalInconsistencyException”而终止应用程序,原因:“此 NSPersistentStoreCoordinator 没有持久存储。它无法执行保存操作。

你能告诉我我错在哪里了吗?你能告诉我如何解决混合 .sqlite 文件的问题吗?

感谢帮助

4

1 回答 1

1

NSDocumentationDirectory在调用中使用NSSearchPathForDirectoriesInDomains,但它应该是NSDocumentDirectory

于 2013-08-10T22:31:45.113 回答