问题标签 [managedobjectcontext]

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 回答
786 浏览

ios - 使用 Core Data 时,是否保留非托管对象类及其托管对象版本

在处理核心数据时,我一直想知道拥有非托管对象的模型类是否有任何价值?如果改为为这些对象提供持久性,则处理核心数据存储的数据管理器类知道如何将类(或多个类)的实例写入核心数据存储,并且当您的应用程序想要从持久性中调用这些实例时,数据存储有一种方法可以在没有托管对象上下文的情况下创建这些对象的实例吗?

我学会使用核心数据的方法是使用 xCode 提供给您的托管对象模型创建模型类,然后每当您创建或销毁这些类的实例时,您将它们视为托管对象,而不是普通类型的对象实例大多数其他类创建。这总是让我觉得有些复杂和困难,因为每当您需要更改托管对象时,您都需要通过托管对象上下文来完成,这在一天结束时只是一个数据库。

抱歉,如果问题令人困惑,如果您需要澄清,我非常乐意,我发现讨论 Core Data 有点困难。

0 投票
1 回答
611 浏览

xcode - 通过核心数据关系改变属性值

我正在努力更新存储在与另一个实体具有“一对多”关系的实体中的值。

我的项目是一个预算应用程序。使用 NSFetchedResultsController,我可以成功地添加一个事务(填充在表中)并删除 FRC 自动保存的事务。

我有一个实体,它使用属性“名称”和“金额”存储交易,我有一个单独的实体,它具有一个属性“theDate”(NSDate),用于存储交易日期。

它是分开的原因是因为我相信这会在组织上使它更简单——许多交易可以在同一日期发生。

在下面我创建实体并在创建新事务后存储值,然后设置关系:

上面的一切else工作正常。else如果选择了要编辑的单元格(事务),则触发后。这一行:updatedObject.setValue(newDate, forKey: "date")旨在简单地更新 TransDates 实体的“theDate”属性(“date”是关系的名称)。但我现在明白为什么那行不通了。

所以我在 else 语句中尝试了这个:

我认为上面将简单地返回所有 TransDates 对象的数组,如果找到匹配项(b/w 数组中的内容和新的 NSDate),updatedObject 将被添加到其中,否则我将添加一些代码来创建newDate 作为新的 NSManagedObject 等。

但是,当执行if dateObject.valueForKey("theDate") as! NSDate == newDate {此操作时:“致命错误:在展开可选值时意外发现 nil”。

我的两个问题:

  1. 就我要完成的任务而言 - 更新/更改与交易相关联的日期(如果日期已经存在并包含其他交易,则此交易只是移动以加入它们),这是最好的方法吗? ?

  2. 我的关系的目的/功能都错了吗?

很抱歉这个冗长的问题,但我已经被困在这里好几天了。所以提前谢谢!

0 投票
2 回答
186 浏览

ios - Objective-c 新手 - UIViewController managedObjectContext 无法识别的选择器发送到实例

使用下面的代码,我得到以下错误:

代码

我在 ( ) 行有一个换行符,note.notes = noteString这是产生错误的时间。在此之前,note 对象被很好地记录。我只想将从请求中获得的数据添加到其中。

核心数据 核心数据

笔记.h

笔记.m

managedObjectContext - appDelegate.m

0 投票
2 回答
855 浏览

swift - Swift - 通过索引号引用导航控制器中的视图控制器

这段代码说明了我在问什么:

对于具有 2 个屏幕的简单应用程序, the和rootViewControllera将位于索引 [0] in ,下一个视图将索引增加 1TableViewControllerrootVCnavigationController

现在我试图managedObjectContextappDelegate后面的 ViewControllers传递rootViewController

中心视图是rootViewController,我想传递managedObjectContext到下一个、上面和下面的屏幕。

我尝试将它从appDelegateto传递到rootViewController,然后将 from 传递rootViewController到下一个视图,但它不起作用。

任何人请告诉我如何知道同一视图之后的视图的索引号?谢谢!

0 投票
1 回答
294 浏览

swift - 在首选项控制器的基于文档的应用程序中获取 managedObjectContext

我有一个基于 OSX 文档的应用程序,用 Swift 编写,并且想将一些数据从我的首选项窗口控制器提交到我的 managedObjectContext 中。
因为首选项窗口似乎不是通过 NSPersistentDocument 调用,而是直接从 appDelegate 调用,所以获取该控制器的 managedObjectContext 的最佳方法是什么?到目前为止,大部分工作都是使用故事板和绑定完成的。
我是否认为如果我在应用程序委托中实例化一个核心数据堆栈,这会否定通过 NSPersistentDocument 提供的堆栈(这将违背事情的目的)?

0 投票
1 回答
1151 浏览

ios - 从子 NSManagedObjectContext 保存对象在父中不可用

我在 iOS 中遇到了父/子托管对象上下文的问题。我记得一个标准用例是使用临时子托管对象上下文,以便用户可以决定按下保存并通过 save() 调用将更改传播到父级,或者可以通过让子级放弃用户的更改莫克消失。

我这样创建孩子:

然后我使用在 childMoc 中创建一个对象

在我用所有必要的变量和几个依赖对象填充我闪亮的新对象后,我在 Swift 中使用此代码尝试从父上下文访问新对象:

我总是得到“在父级中找不到对象”。我错过了什么?我看到使用 NSManagedObjectContext 保存通知的旧示例代码,但我读到使用父子托管对象上下文不再需要这些。上面的代码基于人们声称可以工作的最近的 ObjectiveC 代码(但是它周围抛出了 swift 的 try/catch 东西。)例如,这个链接Correct implementation of parent/child NSManagedObjectContext向我建议上面的设置应该工作。

0 投票
2 回答
313 浏览

sqlite - 核心数据在我想保存时没有保存

我正在开发一个保存医疗记录的应用程序。我正在使用具有单个上下文和单个物理存储的核心数据。尽管调用了 [managedObjectContext save:&error],但如果我通过 Xcode 提取容器,sqlite db 不会显示最新数据。

尝试了类似此处建议的方法:Core data not save my data,但对我没有用。更糟糕的是,数据确实会在一段时间后出现:应用程序可以通过 FTP 发送 sqlite 以转储数据以进行灾难恢复。碰巧上周的工作并不总是出现,但通常会在一周后出现。

我不明白的是:[managedObjectContext save:&error] 是否立即在实体店中写入数据?(我的猜测是否定的)我如何告诉核心数据我想当场写下我的数据(假设它实际上是可能的)?关闭应用程序和/或重新启动设备是否会使核心数据写入 sqlite?

编辑 1 - 添加一些代码 [managedObjectContext save:&error] 在 [CommonHelper SaveData:true] 中被调用;就在@try 块的开头。

0 投票
1 回答
476 浏览

ios - 核心数据多 ManagedObjectContext

多个 ManagedObjectContext (MOC) 如何在核心数据中工作(Swift 2、iOS 9)。我在 StackOverflow 上浏览了很多链接和材料以及答案,但找不到确切的答案。

我想知道,假设我创建了指向 PersistentStoreCoordinator (PSC) 的主 MOC 和另一个将父上下文设置为上述主 MOC 的私有队列 MOC。

问题1:那么这是如何工作的?层次结构是这样构建的:私有队列 MOC --> 主队列 MOC --> PSC。

问题 2:如果我在“私人队列 MOC”上调用 save,它会保存到主 MOC,然后主 MOC 会自动保存到 PSC 吗?还是在 Private MOC 上保存后,我们必须在 Main MOC 上调用显式保存才能将其保存到 PSC ?

我刚开始研究核心数据,在线链接不是很清楚。因此,任何简化的解释都将不胜感激。

谢谢!

0 投票
1 回答
36 浏览

ios - 将 NSManagedObject 重新插入到 ManagedObjectContext

我有一个 NSManageObect 实例,我在没有有效上下文的情况下创建它只是为了使用它来保存数据并传递它

但有时让 Core Data 跟踪(保存)它们对我来说很方便。在这些情况下,我执行以下操作将其添加到核心数据托管对象上下文

这一切都很好。

我的问题是,如果我多次重新插入对 myManagedContext 的相同引用,实际上是否重要?这种重新插入有什么不好的地方吗?在我看来,它不应该有所作为,因为它插入了相同的对象引用。

0 投票
0 回答
36 浏览

ios - 上下文保存将新条目添加到表视图

我有一个 tableviewcontroller,我从那里调用另一个 View Controller。这个新控制器在选定的表格视图单元格上填充对象。在新的视图控制器中,我正在捕获开关更改。当开关打开时,我将开关状态保存到从表视图发送的同一对象中的核心数据中。

下面是调用新视图控制器的代码,segue 是“ShowDetails”

下面是开关状态从关闭变为开启时的代码。

这里的 books 是 BooksDetail 类型的 var,它是一个核心数据实体,使用 func prepare 从 tableviewcontroller 传递

我的问题是books?.managedobjectcontext.save()保存修改后的数据,但是当我关闭应用程序并再次打开它(完全杀死它)时,它将在表格视图中创建一个包含更新数据的新条目。如果我不杀死该应用程序,那么一切正常,并且我选择的单元格会正确更新。这是更新现有对象属性的正确方法吗?