我试图将核心数据添加到我现有的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";}
我真的不知道为什么它会崩溃以及如何解决。如果需要更多信息来提供帮助,请告诉我。
我遵循几乎相同的教程并接收相同的错误消息。我弄清楚问题是什么。
在我的情况下,由于StoreUrl路径不正确并且指向不存在的文件夹,因此无法创建文件。
在我的助手方法[self ApplicationDocumentDirectory](您在问题中没有提供的)中,我在示例代码中键入的是:
:- (NSString *) applicationDocumentsDirectory
{
return [NSSearchPathForDirectoriesInDomains(NSDocumentationDirectory, NSUserDomainMask, YES) lastObject];
}
生产URL file:///Users/xxxxxx/Library/Application%20Support/iPhone%20Simulator/7.0.3/Applications/A6FDD8DB-475B-4C9B-B995-28CCE068DF82/
库/文档 /
其中有一个愚蠢的代码完成错别字,它会生成无效的路径。你能看见它吗?
这是NSSearchPathDirectory Input参数的枚举NSDocumentationDirectory,应该是NSDocumentDirectory。
正确的代码和URL是:
- (NSString *) applicationDocumentsDirectory { return [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) lastObject; }
url:
file:///Users/xxxxxx/Library/Application%20Support/iPhone%20Simulator/7.0.3/Applications/A6FDD8DB-475B-4C9B-B995-28CCE068DF82/
文档/
关闭此问题。我启动了一个新的核心数据项目,并导入了其他代码,并且它起作用了。从来没有在其他项目中起作用。可能忘记了一些东西,但找不到什么