在没有连接到Xcode的情况下测试iPhone上的核心数据

时间:2011-12-20 05:58:12

标签: iphone ios xcode core-data nsmanagedobjectcontext

在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文件。推理中的错误是什么?

2 个答案:

答案 0 :(得分:0)

它会在设备上崩溃吗? 您可以连接设备并检查设备日志中的崩溃报告。它会让您更好地了解正在发生的事情。其次尝试从后台退出应用程序并运行。

我建议检查设备上的崩溃日志,如果它无法创建或找到核心数据,它会给出如下消息:存储缺失或类似的东西。

答案 1 :(得分:0)

您很可能在主捆绑中打开db文件。主包是只读的。您的db文件需要位于应用程序的文档文件夹中。

结帐SO post