问题标签 [nsmanagedobjectmodel]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
3945 浏览

ios - swift 3 Xcode 8 中的 NSManagedObject 和 CoreData

我正在使用 Xcode 8 和 swift 3,我从编辑器菜单 NSManageObjectModel 为我的实体创建 NSManagedObject,如何使用此文件来获取和创建对象,在 Xcode 7 中我使用核心数据堆栈来创建管理对象,持久存储和... 现在我不知道如何在 swift 3 中使用核心数据。

0 投票
1 回答
302 浏览

ios - NSManagedObjectModel 的 URL 为 NULL

我为我的应用程序重新设计了核心数据模型,超出了轻量级迁移的工作范围。所以我现在在应用程序包中有两个核心数据模型,我需要单独访问每个模型(用于常规核心数据设置和手动迁移),这意味着[NSManagedObjectModel mergedModelFromBundles:nil]不合适/不起作用。问题是我无法获得任一模型的 URL,这使我无法使用[NSManagedObjectModel alloc] initWithContentsOfURL:. 这些是我正在使用的方法,它们都返回 NULL:

事实上,当我在其他应用程序上尝试此方法时,即使是具有单个模型的应用程序,它也永远不会返回模型 URL。这很奇怪,因为我的应用程序的先前版本通过使用上述方法通过 URL 获取模型运行得很好......而不是通过[NSManagedObjectModel mergedModelFromBundles].

我已经阅读了这个这个并尝试了建议的解决方案,其中包括确保将模型添加到资源列表中以在构建阶段复制到包中,验证区分大小写的文件名,以及在URLForResource方法中处理文件扩展名。我想我可以将全新的模型呈现为旧模型的新版本,并简单地防止持久存储选项中的自动迁移......但我的方法应该有效。为什么突然无法在 app bundle 中获取模型的 URL?

0 投票
0 回答
24 浏览

ios - 如何通过数据图将新的 Core Data 实体与代码同步?

我只想将一个实体添加到现有的 NSManagedObject 数据图并在代码中访问该实体。在这种情况下,我添加了“地址”:

在此处输入图像描述

现有代码有效。我只是补充说:

...就像最初对 Person() 实体所做的那样。

这是错误:
在此处输入图像描述

这是代码:

问题:如何让代码看到新实体“地址”?

0 投票
1 回答
144 浏览

swift - 核心数据托管对象模型上的大量崩溃

使用 Fabrics 崩溃分析或“Crashlytics”我从以下方法/属性中得到大量崩溃(我假设 BAD_ACCESS):

大量我的意思是 150 名用户在一天内发生了 275 次崩溃。它在大多数设备上都可以正常工作,但是我的模拟器确实遇到过一次问题,我重置了内容并重新启动了我的机器,错误就消失了。

我希望有一个更好的解决方案,而不是告诉那些打电话给我们技术支持的人。

面料退回

有没有其他人遇到过这个问题?我们正在使用 Swift 2.3,目前正在转换为 Swift 3.1。

该函数在调用applicationWillTerminate()时调用。modelURL 为零。

0 投票
1 回答
2005 浏览

objective-c - 使用未声明的类型“NSManagedObjectModel”

我正在尝试将我的代码从 Objective-C 转换为 Swift,但是NSManagedObjectModel我收到了这个错误:

使用未声明的类型 NSManagedObjectModel。

Objective-C 中的代码:

我翻译成斯威夫特:

这样对吗?

0 投票
1 回答
173 浏览

swift - 在运行时查找 CoreData 模型的实体

我在 SWIFT 的 Xcode (8.3.2) 中开发了一个 macOS 应用程序。

我有一个包含多个实体和一个标识符(myidentifier)的 CoreData 模型。

我希望能够在运行时以编程方式识别模型的实体,以便我可以遍历实体并根据 JSON 文件中的数据存储来自一系列 JSON 文件的数据。

迄今为止,我一直在创建实体,然后为每个实体编写一个类来保存和获取数据。它工作正常且符合预期。但是,如果我继续这样下去,我最终会得到大约 50 个不同的实体及其关联的类文件(请注意,有些实体使用一对多关系,但大多数不使用)。

我想创建一个单独的类,它将枚举模型的众多实体并存储相关数据(以及相关的获取例程)。

我还应该注意,我为每个实体使用 NSManagedObject 子类。

如何获取对我用于应用程序的模型的 NSManagedObjectModel 引用?我似乎找不到合适的机制来允许我这样做。我可以使用模型标识符来执行此操作吗?

我的想法是,如果我可以使用 entityByName,我可以使用生成的 [String: NSEntityDescription] 来访问我的实体并根据需要进行枚举。

0 投票
2 回答
107 浏览

swift - 子类化 NSArrayController 会导致 ManagedObjectContext 中的对象不在 NSTableView 中显示

这很奇怪。我有一个包含三个实体的模型。像这样: 在此处输入图像描述

在 InterfaceBuilder 中,我将 NSArrayController 通过 RepresentedObject 连接到 MOC 到 ViewController。一切正常,我可以添加和删除主对象,选择它们,我可以绑定到 TableView 并编辑它们。但是,如果我将 NSArrayControler 子类化为 MasterController 并仅添加观察者:

TableView 没有看到已经存在的对象,只是添加了。我可以编辑它们。但是当我再次打开文档时,新添加的对象也消失了。如果我将控制器的类改回 NSArrayController 我可以再次看到它们。

有什么帮助吗?

0 投票
0 回答
27 浏览

ios - NSManagedObjectModel 无法从路径中读取 MetaModel.mom

NSManagedObjectModel 无法从路径中读取 MetaModel.mom。MetaModel.mom 存在于路径中,但无法从路径中读取它。它也存在于我的项目文件夹中。如果我调试代码,它会从该行返回而不是继续,屏幕变黑并且没有崩溃。我正在为我的应用程序使用 64 位架构,而早期的 32 位架构运行良好。找出原因的任何帮助都是有价值的。谢谢你。

0 投票
1 回答
119 浏览

ios - 如何将来自多个视图控制器的数据保存到单个核心数据实体中

我有一个实体,它具有从 5 个视图控制器填充的属性。

该应用程序基本上是一个包含 5 个问题的基于详细表单的问卷调查,5 个视图控制器中的每一个都包含一个问题及其一组答案选项。在前 4 个中,用户有多项选择题。在最后一个问题中,用户可以从一组选项中选择多个值。

我为每个视图控制器维护了一个实体,以便为该视图控制器显示选项。

为了捕获用户的答案,我创建了一个名为 Answer 的实体,其中包含前 4 个问题的答案的字符串属性以及与第五个实体的关系,以便我可以捕获用户为第 5 个问题选择的一组答案选项。

当用户从第一个问题转到第二个问题到第三个问题时,我还需要保存用户选择,而不是在用户回答所有问题时一次性保存。

此外,如果他弹出第一个问题的屏幕,用户可以放弃答案。

实现它的最佳方法是什么?

我正在寻找以下选项 -

  1. 在进入第一个问题视图控制器之前创建一个答案实体记录。也是一个托管对象上下文(moc)。然后,我在 5 个视图控制器中的每一个中保留一个 moc 属性,然后将在从第一个控制器到第五个控制器的第一个控制器之前创建的 moc 与 Answer 托管对象一起传递。每当用户从一个问题转到下一个问题时,保存在这个 moc 中。
  2. 创建一个 DataCollector 类型的 Singleton 类,其中我有一个 init 方法来创建 Answer 实体记录和用于创建 moc 并保存到 moc 的方法。然后从每个问题中,我都引用了这个 Answer 托管对象并且也共享相同的 moc。

请指教。

0 投票
0 回答
72 浏览

xcode - 创建 NSManagedObject 子类时,XCode 不会生成获取的属性以及属性和关系

当您从数据模型创建 NSManagedObject 子类时,XCode 会生成具有所有已定义属性和关系的类,但不包括获取的属性。

据我记得,在旧版本的 XCode 中这不是问题。当然,我可以手动定义获取的属性,就像以前版本的 XCode 所做的那样:

我的子类.h

我的子类.m

但是如果 XCode 停止这样做,那么也许有另一种方法可以访问获取的属性。我想知道他们为什么改变类生成行为以及我现在应该如何访问获取的属性?