jjzjj

nsmanagedobjectcontext

全部标签

ios - 核心数据在后台导入数据并回滚

对不起标题,我不知道如何总结我的长问题。我的应用在核心数据中有离线数据。用户可以通过从服务器下载最新的来刷新它。图片也是下载的一部分。当用户取消更新操作或中间发生某些事情时,我希望数据保持更新操作开始前的相同状态。许多论坛和博客建议每个辅助线程创建自己的上下文。由于图像下载将在并发操作队列下进行,因此将有许多线程在运行。我不想在每个线程中保存以避免使数据库处于不完整状态。如果我为辅助线程创建我的事件实体的副本,这样所有这些辅助线程都可以保存,随心所欲地编辑,这会不会很好。当整个更新过程结束时,我可以在单个线程中将数据移植到主表/实体。对于给定的场景,推荐的方法是什么?

ios - iOS 中的 NSOperation - 如何处理循环和嵌套的 NSOperation 调用以获取图像

我需要帮助了解如何适当处理以下用例:假设我正在编写一个聊天应用:启动应用请求服务器(AFHTTPRequestOperation)给我一个所有新消息的列表遍历这些消息以查看我是否需要下载任何图像如果是,则再次调用服务器(AFImageRequestOperation)获取图像当我的托管对象“消息”不再处于同一上下文中时,我不断遇到崩溃,但我只使用了一个managedObjectContext。是不是因为我嵌套调用的方式,因为它们是异步的?我几乎可以肯定消息不会在其他地方被删除,因为我看到了。需要注意的一件事是,当我更改ViewController时,这似乎会发生。我启动该应用程序,并在

ios - 核心数据与完整数据存储的子集一起工作......如何?

我正在绞尽脑汁想在CoreData中找出一些我认为应该很容易做到的东西,我需要一些帮助。我有一个数据存储,其中包含过去两年的数据,但在我的应用程序中,我有特定的标准,因此用户只能使用该数据的一个子集(即过去一个月)。我已经创建了谓词来生成获取请求,一切正常。我的问题是我想在这个数据子集上运行一些额外的谓词(即我只想要名称为Sally的对象)。我想这样做而不必使用附加谓词(在NSCompoundPredicate中)重新运行原始谓词;我宁愿只在已经创建的数据子集上运行它。我可以只对获取结果运行谓词吗?谓词的格式是否与对核心数据存储的初始调用相同?感谢您的帮助。

ios - 从核心数据中的关系中删除对象的正确方法

我有一个包含两个实体的简单数据模型:Person和Company。一个人可以分到很多公司,一个公司也可以分到很多人。我用1家公司和2个人填充了数据库,并将所有人分配给了公司。在填充数据库的过程中,CoreData会产生如下日志:CoreData:sql:INSERTINTOZCOMPANY(Z_PK,Z_ENT,Z_OPT,ZNAME)VALUES(?,?,?,?)CoreData:sql:INSERTORREPLACEINTOZ_1PERSONS(Z_1COMPANIES,Z_2PERSONS)VALUES(1,2)CoreData:sql:INSERTORREPLACEINTOZ_

ios - 什么时候会出现 "This NSPersistentStoreCoordinator has no persistent stores. It cannot perform a save operation."错误

"nspersistentstorecoordinatorhasnopersistentstores.itcannotperformasaveoperationbackgroundthread".在后台线程上保存manageContext会导致这个问题吗?抱歉,如果这个问题已经被问到。我想知道它发生的可能原因? 最佳答案 显然,您已经创建了一个基于内存的持久存储协调器,而不是使用SQLite数据库(通常情况)或XML进行存储的协调器。由于没有保存数据库的文件,因此您无法保存任何内容。检查创建持久存储协调器的代码。

ios - 已插入但尚未保存的 NSManagedObjects?

是否可以识别(在运行时)NSManagedObjects已插入到NSManagedObjectContext中(即inserted==YES)但从来没有saved到目前为止上下文的存储。我一开始以为他们的objectID可能仍然是nil但事实并非如此。更新我进行了一项快速实验,看看检查temporaryID(请参阅acceptedanswer)是否也适用于嵌套的MOC。这表明不是:保存子MOC只会向上推一个级别(即到父MOC但不是持久存储,后者更上一层),因此新插入的MO的对象ID仍然是临时的。在这种情况下,确定MO是否在子MOC中是新的并且从未保存过(甚至没有保存到父MOC)的一种方

ios - WatchKit 和应用程序之间实时同步 Core Data

我正在为iPhone应用程序编写WatchKit扩展。我使用应用组共享核心数据。这是有效的,数据是共享的。现在,如果应用程序在前台运行并且新的数据库条目从watch添加到数据库,我想刷新iPhone应用程序内的数据。跟踪我订阅了NSManagedObjectContextDidSaveNotification[[NSNotificationCenterdefaultCenter]addObserver:selfselector:@selector(mergeChanges:)name:NSManagedObjectContextDidSaveNotificationobject:nil

ios - NSManagedObjectContext 并发

在文档中:NSManagedObjectContextClassReference它指出:Settermethodsonqueue-basedmanagedobjectcontextsarethread-safe.Youcaninvokethesemethodsdirectlyonanythread.谁能给出一个代码示例来说明这到底是什么意思。它实际上是否意味着阅读“基于队列的托管对象上的Setter方法是线程安全的”另外,如果我有一个存储为iVar的托管对象(不是最佳实践),我可以调用它的managedObjectContext方法及其方法,然后从任何线程内安全地调用performB

ios - 后台位置的核心数据更新位置导致阻塞 UI

我正在使用3ManagedObjectContextsArchitecture(为父级为managedObjectContext-UI的背景创建临时上下文,并且父级writerObjectContext应该在后台写入数据库)并且我在更新对象时遇到阻塞UI的问题。例子最好。所以我的数据库中有数千个点,我使用NSFetchedResultsController和tableView来获取它们。这是我的代码:-(void)viewDidLoad{[superviewDidLoad];temporaryContext=[[NSManagedObjectContextalloc]initWithC

ios - NSManagedObjectContext - 如何在 parent 改变时更新 child ?

Apple文档不清楚(或者我找不到)关于当父MOC插入后保存时父MOC和子MOC会发生什么。我正在使用MARCUSZARRA的http://martiancraft.com/blog/2015/03/core-data-stack/方法,顶部有一个privateQMOC,childMainMOC作为主线程。问题我通过在privateMOC上调用保存的后台互联网请求将10,000个对象添加到privateMOC,但是在父级保存后,在childMainMOC上下文上构建的任何NSFetchedResultsControllers都不会调用我的委托(delegate)。因此界面不会更新以显示