在iPhone上运行应用程序可以正常工作,但前提是它与Mac连接并链接到Xcode。 如果我在断开连接后尝试运行它(停止运行后),Core Data将不再起作用。 Build 和 Debug 配置都不起作用(Product - > Edit scheme ... - > Run xy.app - > Info - > Build configuration)。 我的xcdatamodel设置: 文件类型:默认核心数据模型 地点:相对于集团
有什么想法吗?
干杯, Saeppi
很抱歉没有更具体地说明我的问题。没有崩溃,我认为我对Core Data Model所做的更改没有发生。 阅读更多关于SQLite以及它如何与Core Data一起工作,我承认我犯了一个非常愚蠢的错误:我从教程中复制了* .sqlite文件并将其导入我的Xcode项目并将其复制到App的文件夹(和然后重命名它当然)。删除sqlite文件会导致以下错误:
错误:/Users/myName/Documents/myApp/myApp.sqlite:没有这样的文件或目录
我的PersistentStoreCoordinator:
- (NSPersistentStoreCoordinator *)persistentStoreCoordinator {
if (persistentStoreCoordinator != nil) {
return persistentStoreCoordinator;
}
NSURL *storeUrl = [NSURL fileURLWithPath: [[self applicationDocumentsDirectory] stringByAppendingPathComponent: @"MyApp.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 %@, %@", error, [error userInfo]);
UIAlertView *alert = [[UIAlertView alloc] initWithTitle:NSLocalizedString(@"ErrorKey", nil)
message:NSLocalizedString(@"ErrorDBKey", nil)
delegate:nil
cancelButtonTitle:@"OK"
otherButtonTitles:nil, nil];
[alert show];
[alert release];
}
return persistentStoreCoordinator;
}
和我的应用程序目录:
- (NSString *)applicationDocumentsDirectory {
return [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) lastObject];
}
我认为Core Data会在从文件夹中删除后生成一个新的sqlite文件。推理中的错误是什么?
答案 0 :(得分:0)
它会在设备上崩溃吗? 您可以连接设备并检查设备日志中的崩溃报告。它会让您更好地了解正在发生的事情。其次尝试从后台退出应用程序并运行。
我建议检查设备上的崩溃日志,如果它无法创建或找到核心数据,它会给出如下消息:存储缺失或类似的东西。
答案 1 :(得分:0)
您很可能在主捆绑中打开db文件。主包是只读的。您的db文件需要位于应用程序的文档文件夹中。
结帐SO post