我正在将Core Data添加到现有应用程序中,我遵循以下步骤:
导入框架
创建模型
除了设置堆栈外,我还使用以下代码:
- (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
没有持久存储。这不可以 执行保存操作。'
答案 0 :(得分:4)
这个问题可能与您运行应用程序然后更改了模型有关。
最简单的解决方案是从模拟器/设备中删除应用程序,然后执行清理,然后再次尝试。
更正确的解决方案是按I keep on getting "save operation failure" after any change on my XCode Data Model中的建议处理轻度迁移。
一个简单的建议是按照XCode4 and Core Data: How to enable SQL Debugging中的建议启用核心数据日志,看看底层是什么。
希望有所帮助。