6

我一直在尝试将 Core Data 添加到我现有的 iOS 项目中。我没有现有的 sql 数据库,但我创建了一个数据模型。我遵循以下教程:http ://wiresareobsolete.com/wordpress/2009/12/adding-core-data-existing-iphone-projects/

它在以下代码中产生错误:

(NSPersistentStoreCoordinator *) persistentStoreCoordinator{
if (persistentStoreCoordinator != nil){
    return persistentStoreCoordinator;
}
NSURL *storeUrl = [NSURL fileURLWithPath: [[self applicationDocumentDirectory]
           stringByAppendingPathComponent: @"MyPOC.sqlite"]];
NSError *error = nil;
persistentStoreCoordinator = [[NSPersistentStoreCoordinator alloc]
                              initWithManagedObjectModel:[self managedObjectModel]];
if (![persistentStoreCoordinator addPersistentStoreWithType:NSSQLiteStoreType configuration:nil URL:storeUrl options:nil error:&error]){
    NSLog(@"Unresolved error OH NO %@, %@", error, [error userInfo]);
}
return persistentStoreCoordinator;
}

我收到以下错误:

2012-10-25 13:52:29.156 MyPOC[1994:11603] Unresolved error OH NO Error
Domain=NSCocoaErrorDomain Code=512 "The operation couldn’t be completed. 
(Cocoa error 512.)" UserInfo=0x8246240 {reason=Failed to create file; code = 2}, 
{reason = "Failed to create file; code = 2";}

我真的不知道它为什么会崩溃以及如何解决它。如果需要更多信息来帮助,请告诉我。

4

2 回答 2

16

我遵循几乎相同的教程并收到相同的错误消息。我想出了问题所在。

在我的情况下,无法创建该文件,因为 storeURL 路径不正确并指向一个不存在的文件夹。

在我的辅助方法 [self applicationDocumentDirectory] ​​(您在问题中没有提供)中,我输入了示例代码,就像在教程中一样:

- (NSString *) applicationDocumentsDirectory
{
    return [NSSearchPathForDirectoriesInDomains(NSDocumentationDirectory, NSUserDomainMask, YES) lastObject];
}

它产生了 URLfile:///Users/xxxxxx/Library/Application%20Support/iPhone%20Simulator/7.0.3/Applications/A6FDD8DB-475B-4C9B-B995-28CCE068DF82/库/文档/

那里有一个愚蠢的代码完成拼写错误,会生成无效路径。你能看见它吗?

它是 NSSearchPathDirectory 输入参数的枚举 NSDocumentationDirectory,它应该是 NSDocumentDirectory。

正确的代码和网址是:

- (NSString *) applicationDocumentsDirectory
{
    return [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) lastObject;
}

网址:file:///Users/xxxxxx/Library/Application%20Support/iPhone%20Simulator/7.0.3/Applications/A6FDD8DB-475B-4C9B-B995-28CCE068DF82/文档/

于 2013-11-03T13:45:18.200 回答
0

关闭这个问题。我开始了一个新的核心数据项目并导入了我的其他代码并且它有效。从来没有让它在其他项目中工作。可能忘记了什么但没有找到什么

于 2012-12-20T09:51:40.330 回答