问题标签 [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.
ios - CoreData Object Move Between Entities Not Working
I have two entities and they have the exact same three attributes (name, desc, displayOrder), both have a handful of records, and my goal is to add/insert every item from "Entity 1" into "Entity 2".
Close, But No Cigar
I think my code is quite close. The console print out shows my code is successfully sending each item in "Entity 1" to "Entity 2" and saving it. BUT they save over each other! The first item is moved and saved, then the second item is moved but copies over the item that was previously moved. End result: only the last item moved actually shows up in the final "Entity 2".
Question: How do I fix this?
Possible Clue: I have noticed that the displayOrder doesn't seem to be updating correctly. The first item should be 0, the second should be 1, etc but instead each time the code cycles the lowest displayOrder is 1 higher (A three item list might start with values 2,3,4 - then my code moves/copies another item to entity 2 and the display order values are: 3,4,5)
Question: What code can I add or fix to make this transfer I'm attempting work!?!
Bonus question: Post-transfer how do I quickly/easily clear all the values from "Entity 1"
ios - 在 iOS 9 的 Core Data 中有一个主键属性有意义吗?
在iOS 9
中,我可以在实体中指定某些属性,unique constraints
以防止创建具有相同唯一约束的托管对象。
每个NSManagedObject
都有自己的ObjectId
但在内部由模型维护Core Data
并且不能设置为模型中的唯一约束。
基于这个概念,primary key
如果我不想要重复数据,为核心数据中的所有实体包含一个“”属性并指定主键作为唯一约束是否有意义?
ios - 在代码中使用 NSManagedObject 模型
我有一个用户模型类(由 XCode 和 Swift 生成):
它的扩展名:
我可以从 CoreData 保存/获取数据。 但是我可以在没有 CoreData 的情况下使用这个类进行对象管理吗?或者我需要为此创建其他类/结构?
例如,创建用户对象(没有 ObjectContext),设置他的属性并将其作为属性发送到某个函数中?也许我可以在 User 类(如struct {var firstNameData, secondNameData,...}
)中创建一些结构并在代码中使用它?
core-data - CoreData:所需类型=城镇;给定类型 = Towns - 不可接受的一对一关系值类型
我在挠头,因为几个小时后我仍然无法理解这一点。
我的核心数据模型中有 2 个实体:
- 城市
- 餐厅
我已经定义了一对多和反向的关系。(是的,你明白了,一个城镇可以有多家餐厅;)
我正在使用 Core Data Stack 来保存来自 CloudKit 和 AlecrimCoreData 库的元素。在一个从 CloudKit 中获取内容的类中,我通过 Alecrim 创建了上下文:
然后我有一堆函数调用类函数来创建 NSManagedObjects,如果需要的话
如您所见,我将 dataContext 传递给每个调用,因此餐厅和城镇的情况相同。在本地保存城镇后,会抓取 CloudKit 餐厅对象。
抓取时,我可以创建餐厅 NSManagedObjects 并添加属性,但是当我想链接城镇时,设置城镇时出现奇怪的错误:
错误:
由于未捕获的异常'NSInvalidArgumentException'而终止应用程序,原因:'一对一关系的值类型不可接受:属性=“城镇”;所需类型=城镇;给定类型=城镇;价值=(实体:城镇;ID:0xd000000000080000;数据:{ckid =“6665ca0f-af57-4305-8e18-ced7540e6279”;名称=巴黎;recordChangeTag = ii0l38hp;餐厅=“”;})。
我试图创建一个新的上下文,我试图将 Town 设置为NSSet
相同的结果。
这是我的餐厅模式:
和镇:
我每个人都有同样的问题:我有很多链接。
ios - 在 CoreData 中存储“Item-ItemDetails”的最佳方式
作为 99% 的 iOS 应用程序,我的主屏幕上有一个长长的项目列表,当用户点击一个时,他会看到项目的详细信息。非常简单。比方说,要渲染第一个屏幕,我需要title和images。而对于第二个 -一个大的 html。所有数据都永久存储在CoreData
.
我希望列表 ( UICollectionView
) 尽可能快。因此,在用户进入详细信息屏幕之前,我无法加载 html-s。
如何实施?我应该创建两个NSManagedObject
类:Item
和ItemDetails
?是否CoreData
懒惰地加载所有内容?
ios - 在通过核心数据获取数据的同时,自动再次插入已有的行
我是核心数据的新手。我正在尝试以面向对象的方式实现它。作为一个示例项目,我创建了一个视图控制器,它通过核心数据显示来自 sqlite 数据库的数据,并且数据由另一个视图控制器输入。但是,我想通过模型类“ContextHandler”处理数据获取和插入,并创建了另一个模型类“Device”,它是NSManagedObject
.
但是,在获取数据时,我正在重新输入以前输入的数据。
我的实体模型类被命名为“设备”。
设备.h -
和 Device.m -
通过以下类,我正在插入和获取设备对象。
插入方法是
获取方法是-
问题是当我初始化设备对象时,我最终再次将对象添加到数据库中。
如何解决这个问题。如何在不再次插入数据的情况下初始化 Device 类。
我做不到——
如果我这样做,应用程序就会崩溃。任何人都可以在这里帮助我。
ios - 存储元数据和托管对象模型之间的兼容性标准是什么?
我的应用程序使用CoreData
框架,我想检查商店元数据和托管对象模型之间的兼容性。我做标准的方式:
它返回NO
。但是,元数据中的实体与模型中的实体相同。相同数量的实体和每个实体具有相同的名称。然而,自从使用此模型创建商店以来,模型确实发生了变化,我删除了一个实体中的几个属性。我想知道这是否足以让模型与商店元数据不兼容。我查看了官方文档,它说:
问题(当我阅读 Apple 的文档时经常发生这种情况)是我不太确定这句话的确切含义。那么任何人都可以解释更多关于该主题的信息吗?鉴于元数据中的实体与模型中的相同,如何CoreData
确定模型是否与元数据兼容?
cocoa - 在早期开发过程中轻松迁移核心数据,此时数据丢失是可以接受的
当 Core Data 应用程序处于早期开发阶段时,其托管对象模型通常处于不断变化之中。对于每个构建,都会在模型中添加或删除新的托管对象和属性。
当托管对象模型更改时,应用程序将在下次运行时崩溃并出现以下错误:
开店模式与开店模式不兼容
在这种情况下,常见的建议是从您的设备/模拟器中删除应用程序 并重新运行。
这对于使用 Xcode 的开发人员来说很好,但对于参与发布过程的非技术利益相关者来说很烦人。最好不要向 CEO 或 QA 团队解释他们必须在从 TestFlight 安装更新之前删除应用程序。或字段由此问题引起的崩溃错误。
一旦模型完成了一点,我们将实施一个真正的核心数据迁移策略。
在这个开发阶段,数据丢失是可以接受的和预期的。
该方法将在应用发布前被移除。
在版本之间“迁移”对托管对象模型的更改的最简单、轻量级、可移动的调试方法是什么?这可能相当于“删除应用程序并重新运行”,但无需手动删除应用程序。
这应该处理对核心数据堆栈的所有更改,包括添加和删除托管对象和属性。