1

我正在将核心数据添加到现有应用程序中,我按照以下步骤操作:

  • 导入框架

  • 创建模型

除了设置堆栈之外,我还使用以下代码:

- (NSManagedObjectContext *) managedObjectContext {
    if (managedObjectContext != nil) {
        return managedObjectContext;
    }
    NSPersistentStoreCoordinator *coordinator = [self persistentStoreCoordinator];
    if (coordinator != nil) {
        managedObjectContext = [[NSManagedObjectContext alloc] init];
        [managedObjectContext setPersistentStoreCoordinator: coordinator];
    }

    return managedObjectContext;
}

- (NSManagedObjectModel *)managedObjectModel {
    if (managedObjectModel != nil) {
        return managedObjectModel;
    }
    managedObjectModel = [[NSManagedObjectModel mergedModelFromBundles:nil] retain];

    return managedObjectModel;
}

-(NSPersistentStoreCoordinator *)persistentStoreCoordinator {

    if (persistentStoreCoordinator != nil) {
        return persistentStoreCoordinator;
    }

    NSURL *storeUrl = [NSURL fileURLWithPath: [[self applicationDocumentsDirectory] stringByAppendingPathComponent: @"xxxxx.sqlite"]];

    NSError *error = nil;
    persistentStoreCoordinator = [[NSPersistentStoreCoordinator alloc] initWithManagedObjectModel: [self managedObjectModel]];
    if (![persistentStoreCoordinator addPersistentStoreWithType:NSSQLiteStoreType configuration:nil URL:storeUrl options:nil error:&error]) {
       // Handle error
    }    

    return persistentStoreCoordinator;
}

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

但是当我尝试保存数据时,我得到以下执行

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

4

1 回答 1

4

这个问题可能是因为您已经运行了应用程序,然后您更改了模型。

最简单的解决方案是从模拟器/设备中删除应用程序,然后执行清理,然后重试。

更正确的解决方案是按照我在 XCode Data Model 发生任何更改后继续出现“保存操作失败”中的建议处理轻度迁移。

一个简单的建议是按照XCode4 和 Core Data 中的建议启用 Core Data 日志:How to enable SQL Debugging and see what is going under the hood。

希望有帮助。

于 2012-10-14T11:03:20.557 回答