- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
对于我使用 CoreData 的 iOS 应用程序,我需要一个模型,其中某些实体属性在应用程序的 iPhone 和 iPad 版本之间有所不同。为此,我使用 initWithContentsOfURL: 从位于我的应用程序包中的 momd 文件加载了一个 NSManagedObjectModel。但是,在 storeCoordinator 实际使用模型之前,我在模型中以编程方式修改了一些实体(基于我存储在设备特定 plist 中的信息)。这曾经在 iOS4 上完美运行。正如 Apple 在其文档中所述,
Managed object models are editable until they are used by an object graph manager (a managed object context or a persistent store coordinator).
在 iOS5 中似乎不再是这种情况(尽管文档仍然说明了这一点)。一旦创建模型,使用 initWithContentsOfURL: 例如,任何修改尝试都会抛出“NSInternalInconsistencyException”,原因:“无法修改不可变模型”。如果我在创建模型对象后立即在调试器中打印模型对象的描述,它显示为“isEditable 0”,而在 iOS4 上运行相同的代码时,它显示为“isEditable 1”。
按照 Apple 的建议,在模型上使用“copy”创建一个可编辑的副本,也会返回一个带有“isEditable 0”的模型。
我看到了两个可能的解释:
我将继续深入研究这些选项,但如果有人对此有经验,我将不胜感激。
最佳答案
这是一个错误或未记录的更改。我运行了这个测试代码:
NSURL *modelURL = [[NSBundle mainBundle] URLForResource:@"TestManageObjectModelEdits" withExtension:@"momd"];
NSManagedObjectModel *mom = [[NSManagedObjectModel alloc] initWithContentsOfURL:modelURL];
NSEntityDescription *e=[[NSEntityDescription alloc] init];
[e setName:@"PEntity"];
NSArray *a=[mom entities];
NSArray *b=[a arrayByAddingObject:e];
[mom setEntities:b];
NSLog(@"mom = %@",mom);
... 在 iOS 4.3 和 5.0 下。它在 4.3 下工作并抛出一个错误,说它不能在 5.0 下修改模型文件。
关于ios - 如何编辑从 iOS5 中的 momd 加载的 NSManagedObjectModel,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7848237/
这是toggleAddProject方法的代码,核心数据代码与Apple的CoreDataBooks示例中的代码几乎相同,但是当我单击添加按钮时,应用程序崩溃并显示entityForName:无法找到
如果实体始终在通过合并相关模型创建的 NSManagedObjectModel 中使用,是否可以对单独 NSManagedObjectModel 中定义的实体之间的关系进行建模? 例如,假设模型 1
我正在使用Core Data,并且在我的应用程序开始时就很难将数据导入数据库。 以下是我遵循的教程中获取的一些代码。 下面概述了我获得SIGABRT的要点。 任何建议或帮助表示赞赏 谢谢 //THIS
我得到错误: Terminating app due to uncaught exception 'NSInternalInconsistencyException', reason: '+entit
我有以下要求:使用 .xml 文件中的数据创建并填充 SQLite 数据库,该文件可以随时具有不同的结构,因此我无法使用 Xcode 创建 NSManagedObjectModel,它必须在运行时。我
谁能告诉我有关在 Xcode 中动态构建核心数据模型的教程?我找到的所有教程都基于静态设计,但苹果文档说可以通过编程方式构建模型。遗憾的是,苹果文档集中没有这方面的示例。 最佳答案 您必须初始化一个N
NSManagedObjectModel -versionIdentifiers 的文档说, The Core Data framework does not give models a defaul
有人想要合并多个 NSManagedObjectModel 有几个原因。如果你在网上搜索,所有的回答都是不可能的,或者只有共享一种或多种关系的两个不相关的实体才有可能。请参阅this和 this例如链
我正在尝试在我已经开始的项目中设置核心数据。我已经解决了一些其他错误,但现在已将范围缩小到这个, *** Terminating app due to uncaught exception 'NSIn
我真的不明白为什么我的 map 方法会出错。错误是调用中的额外参数。 这个有效: let url1 = NSURL(string: "123"); let url2 = NSURL(string: "
我正在尝试将我的代码从 Objective-C 转换为 Swift,但是对于 NSManagedObjectModel 我收到此错误: Use of undeclared type NSManaged
这是 viewDidLoad 中 fetchRequest 的代码,该代码来自找到的教程 here只是我以编程方式链接导航 Controller 和 tableview,而不是使用界面生成器。实体 P
我正在使用 SWIFT 以编程方式在核心数据的托管对象模型中创建实体。 当我创建一个 NSEntityDescription 数组并将其传递给 让 managedObjectModel : NSMan
我正在使用 Apple 的 CoreDataBooks 示例项目作为核心数据的学习辅助工具。 我修改了应用程序,以便在加载应用程序时首先显示菜单页面 - 而不是 Books TableView (Ro
我有一个包含 15 个版本的核心数据模型。它有代码可以在发布时逐步从当前商店的版本迁移到最新版本。 关键是调用 NSDictionary* options = @{ NSMigratePers
自从我连接核心数据堆栈并迁移数据库以来,我几个月来一直在一个使用核心数据的项目中顺利进行,昨晚刚刚开始在托管对象模型上出现错误。 我知道它正在做的是尝试在这一行中建立一个托管对象上下文 NSEntit
我有一个项目,当我为 iOS 4.x 构建它时工作正常,但是当我为 iOS 5.x 构建它时它失败并崩溃。澄清一下,4.x 构建可以在 iOS 5.1 上正常运行,但是当我针对 5.0 或 5.1 构
我们在 Appstore 中的实时应用程序崩溃,原因如下 Fatal Exception: NSInvalidArgumentException CoreData: Cannot load NSMan
您好,我正在创建一个应用程序,它需要将我的标签内容中的数据保存到我的核心数据模型中,该模型被命名为 cart.xcdatamodeld,我的实体被命名为 Cartdetail。当我在我的应用程序中按下
当你编写一个使用 CoreData 的静态库时,将一个普通的 .xdatamodeld 文件包含到项目中会是一团糟,因为你不能简单地将它的编译版本 (.momd) 链接到你的二进制文件中,所以最好创建
我是一名优秀的程序员,十分优秀!