jjzjj

nsmanagedobjectcontext

全部标签

ios - 关于与主应用程序共享核心数据上下文的应用程序扩展编程指南

没有文档或示例代码解释我们是否可以与应用扩展共享viewContext。AFAK,应用程序和扩展程序在不同的进程中运行,我们不应该与另一个进程/线程共享moc。我不应该与应用扩展共享包含应用的viewContext。那么我们应该创建另一个viewContext以在应用程序扩展中使用(?但NSPersistentContainer只提供一个viewContext)或在应用程序扩展中使用背景上下文(???)Whileanextensionisrunning,itcommunicatesdirectlyonlywiththehostapp.Thereisnodirectcommunicati

iphone - 如何检测何时需要保存 NSPersistentStore?

我有一个iOS应用程序,我在其中使用coreData来存储我的“文档”。它们都共享一个公共(public)的NSManagedObjectContext,我经常保存上下文。我想跟踪各种“文档”(其中每个文档都是一个单独的NSPersistentStore)的最后修改日期,并将日期存储在每个存储具有的特定唯一“根”对象上。我可以尝试在修改文档时使修改时间戳保持最新,但如果我能在保存上下文时找出哪些持久性存储需要保存,它会更清晰、更健壮。我找不到任何方法来检测持久存储是否需要保存。我可以查询NSManagedObjectContext以查看哪些托管对象需要保存,尽管我找不到一种简单的方法来

ios - CoreData多线程删除

在我的iPad应用程序中,我使用多线程从我的数据库中读取数据,因此我使用不同的托管对象上下文,如FredMcCann'sblog所述我面临的问题是从数据库中删除项目。当我尝试删除时,出现managedObjectContext无法删除另一个objectContext的数据的错误。我该如何解决这个问题?如果有人能帮我解决这个问题就太好了。 最佳答案 您需要传递objectId,然后从其他上下文中获取该对象。NSManagedObject*object=//gettheobject...NSManagedObjectID*objectI

ios - 核心数据撤消/重做 - 操作取决于撤消的内容

我的iPad应用程序(一个OpenGL绘图应用程序)中有一个有点复杂的数据模型,我正在努力实现撤消/重做功能。我喜欢CoreData可以免费撤消数据模型更改这一事实,但我不知道内置功能对我来说是否足够。我见过很多在绘图应用程序中实现撤消/重做的示例,但是它们通常执行以下操作:告诉托管对象上下文撤消。根据更改后的数据模型重绘页面上的所有内容。这是非常低效的-在我的应用程序中,我需要能够根据正在“撤消”的特定对象执行撤消操作,这通常意味着只刷新Canvas的一部分。所以我的问题是:我可以注册自己的撤消操作并将其与内置撤消结合使用吗?例如,假设我在用户画线时执行以下操作:-(void)dra

iphone - 记录额外生物体的仪器

在我的应用程序初始化过程中,我从CoreData托管对象上下文中读取了一些数据。出于某种原因,即使只调用了一次executeFetchRequest代码行,我在InstrumentsAllocations工具对象列表中看到了5个事件条目。例如,如果我从Instruments中深入查看源代码,我会看到:我在这一行设置了一个断点,并验证了该应用只在这一行停止了一次。然而,这是我在Instruments中看到的结果:如果我查看这5个对象中每一个的堆栈跟踪,它们完全相同,都指向第135行,如第一个屏幕截图所示。(如您所见,我尝试了几种不同的方案,但所有方案的结果都相同。)所以我有两个问题。问题

ios - 在后台线程中恢复 NSManagedObject 关系

我正在通过CoreData开发应用程序,我需要在后台线程中执行一些计算以创建基于特定NSManagedObject的xml文件。根据文档,我设置了NSOperation子类。此类具有如下属性:@property(nonatomic,retain)NSArray*objectIDs;其中objectIDs是一个托管对象ID数组(NSManagedObjectID类型)。根据文档这是必要的:NSManagedObject不是线程安全的。在NSOperation子类的main中,我正在执行以下操作:NSAutoreleasePool*pool=[[NSAutoreleasePoolalloc

iphone - 使用#DEFINE 共享托管对象上下文

只是寻找一些关于共享托管对象上下文是否是个坏主意的反馈。在MyApp-Prefix.pch文件中,我添加了以下内容:#import"AppDelegate.h"#defineMOC[(AppDelegate*)[UIApplicationsharedApplication].delegatemanagedObjectContext]然后,当我需要访问上下文时,我会执行以下操作(仅作为示例):[MOCdeleteObject:[self.fetchedResultsControllerobjectAtIndexPath:indexPath]];这似乎工作得很好,但也似乎太容易了,尤其是因

objective-c - 访问 iCloud 通知中的已删除对象

我有一个应用程序设置很像iCloudCoreDataRecipes示例(即,将CoreData与iCloud结合使用)。在应用委托(delegate)中,我观察到NSPersistentStoreDidImportUbiquitousContentChangesNotification当通知到达时,我打电话[contextmergeChangesFromContextDidSaveNotification:note];收到此通知后,我想做一些额外的处理,但在使用NSDeletedObjectsKey集中存在的NSManagedObjectID标识的对象时遇到了问题。NSSet*dele

iphone - 主线程在执行后台线程时正在等待[NSManagedObjectContext(_NSInternalAdditions)lockObjectStore]

我正在通过后台线程拥有的新创建的NSManagedObjectContext在后台线程(使用GCD)上执行昂贵的读取操作(约5秒,约30,000个对象)。但是,我没有在后台执行此操作,因为主线程正在等待持久性存储上的锁定,因此UI被冻结。这是堆栈跟踪:*thread#1:tid=0x1c03,0x3641be78CoreData`-[NSManagedObjectContext(_NSInternalAdditions)lockObjectStore],stopreason=breakpoint1.1frame#0:0x3641be78CoreData`-[NSManagedObjec

ios - 核心数据 : executeFetchRequest:error: returns objects with no managedObjectContext

我遇到了一个问题,其中NSManagedObjectContext的executeFetchRequest:error:正在返回尚未插入的NSManagedObjects数组在上下文中。我的方法:-(NSArray*)deleteAllObjectsWithEntityName:(NSString*)entityName{NSFetchRequest*fetchRequest=[[NSFetchRequestalloc]init];NSEntityDescription*entityDesc=[NSEntityDescriptionentityForName:entityNameinM