ios - 核心数据 - 不能存储两个单独的实体

标签 ios objective-c core-data

我让 Core Data 与一个名为 THSettings 的实体一起正常工作(加载、保存)。

但是,我想创建另一个名为 THDetails 的不相关的核心数据实体。

当我在同一个 xcdatamodeld 文件中创建另一个实体时,它在运行应用程序时给我这个错误:“用于打开商店的模型与用于创建商店的模型不兼容”。

所以我删除了那个实体并为新实体创建了另一个 xcdatamodeld 文件,现在它给出了这个错误: “* 由于未捕获的异常‘NSInternalInconsistencyException’而终止应用程序,原因:‘NSFetchRequest 无法找到实体名称‘THDetails’的 NSEntityDescription”

谁能告诉我为什么这不起作用?我应该能够保存多个不相关的实体...

这是加载 THDetails 的代码:

-(NSMutableArray *)loadSavedNotes {
    THAppDelegate *appDelegate = [[UIApplication sharedApplication] delegate];
    NSManagedObjectContext *moc = [appDelegate managedObjectContext];
    NSFetchRequest *fetchRequest = [[NSFetchRequest alloc] initWithEntityName:@"THDetails"];
    NSMutableArray *detailsList = [[moc executeFetchRequest:fetchRequest error:nil] mutableCopy];
    NSLog(@"%d", [detailsList count]);
    return detailsList;
}

这是加载 THSettings 的代码:

THAppDelegate *appDelegate = [[UIApplication sharedApplication] delegate];
NSManagedObjectContext *moc = [appDelegate managedObjectContext];
NSFetchRequest *fetchRequest = [[NSFetchRequest alloc] initWithEntityName:@"THSettings"];
NSMutableArray *settingsList = [[moc executeFetchRequest:fetchRequest error:nil] mutableCopy];


// ... process it

最佳答案

您需要定义一个模型来定义您的所有实体。如果您添加额外的 实体到模型,你有两个选择:

  • 只需将新实体添加到现有模型即可。在这种情况下,您必须删除该应用 在运行新代码之前从模拟器或设备开始一个新的 与更改后的模型兼容的数据库。这通常在开发过程中完成, 当不需要保留数据时。或者:
  • 创建一个模型版本并在 Core Data 时添加“轻量级迁移”选项 堆栈被初始化。在这种情况下,旧模型和新模型都被复制到 应用程序包,Core Data 可以(在某些情况下)迁移旧数据库 到一个新的数据库。如果对已分发的应用程序进行了更新,则会执行此操作, 并且您希望保留数据。 “轻量级迁移”适用于模型中的简单更改,例如添加新的 实体。 参见 "Core Data Model Versioning and Data Migration Programming Guide"了解更多信息。

关于ios - 核心数据 - 不能存储两个单独的实体,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19447646/

相关文章:

ios - 将数据异步加载到表格 View 单元格中的正确方法/可接受的标准是什么?

swift - 必须有一个有效的 NSEntityDescription (SwiftUI)

ios - 未调用 SDWebImage 下载图像完成 block

ios - NSString drawAtPoint : and kCGTextFillClip, 为什么不起作用?

objective-c - 在 Cocoa 中使用表格作为布局容器?

iphone - UITableView只有向上滚动后才会显示

ios - CoreData 将对象添加到一对多关系错误

iphone - AVAudioPlayer 在 iPhone 5 上不工作

ios - 为什么我下载头像的函数被调用了数千次?

ios - 动态加载 Objective C 代码