草庐IT

nsmanagedobjectcontext

全部标签

ios - 访问关系时核心数据privateQueue performBlockAndWait死锁

这个话题已经在很多论坛上讨论过,但我仍然不能完全理解performBlockAndWait是如何工作的。根据我的理解,context.performBlockAndWait(block:()->Void)将在阻塞调用者线程的同时在自己的队列中执行block。Documentation说:Yougroup“standard”messagestosendtothecontextwithinablocktopasstooneofthesemethods.什么是“标准”消息?它还说:Settermethodsonqueue-basedmanagedobjectcontextsarethread

ios - 访问关系时核心数据privateQueue performBlockAndWait死锁

这个话题已经在很多论坛上讨论过,但我仍然不能完全理解performBlockAndWait是如何工作的。根据我的理解,context.performBlockAndWait(block:()->Void)将在阻塞调用者线程的同时在自己的队列中执行block。Documentation说:Yougroup“standard”messagestosendtothecontextwithinablocktopasstooneofthesemethods.什么是“标准”消息?它还说:Settermethodsonqueue-basedmanagedobjectcontextsarethread

ios - 有没有办法弄清楚 NSManagedObjectContext 在哪个线程上?

我对NSManagedObjectContext线程的理解是,它只能在创建它的线程上执行核心数据获取请求、删除等。有什么方法可以检查NSManagedObjectContext是在哪个线程上创建的,或者在特定的执行点当前线程是否属于特定的NSManagedObjectContext?谢谢! 最佳答案 MyunderstandingofthreadswithrespecttoanNSManagedObjectContextisthatitcanonlyexecutecoredatafetchrequests,deletes,etc.,

objective-c - '+实体名称 : nil is not a legal NSManagedObjectContext parameter - Core Data

我已将所有相关代码添加到AppDelegate,我可以添加到数据模型并从applicationDidFinishLaunchingWithOptions中的数据模型中获取。当我试图在我的ViewController中写入数据模型时,我的问题就出现了。我已将此代码添加到头文件中:NSFetchedResultsController*fetchedResultsController;NSManagedObjectContext*managedObjectContext;@property(nonatomic,retain)NSFetchedResultsController*fetched

iphone - AppDelegate 中的多个 NSManagedObjectContext

通常在单线程应用程序中,主托管对象上下文将驻留在AppDelegate中,我们将通过appDelegate.mainMOC访问它。但是现在Apple引入了嵌套上下文(父和子),they'rerecommending“传递接力棒”方法:Nestedcontextsmakeitmoreimportantthaneverthatyouadoptthe“passthebaton”approachofaccessingacontext(bypassingacontextfromoneviewcontrollertothenext)ratherthanretrievingitdirectlyfro

ios - 核心数据 : nil is not a legal NSManagedObjectContext parameter

我是CoreData的新手,一直在尝试学习许多教程,但大多数教程都将所有CoreData方法都放入AppDelegate中。我读到最好远离AppDelegate并使用自定义数据模型类来管理这些方法。我创建了一个名为MyDataModel的自定义类来管理我的所有数据。我实现了样板核心数据代码。在我的一个ViewController中,我有一个使用核心数据实现一些数据的简单方法:-(void)getProfile{/**getProfile*/NSLog(@"%@",_Model.managedObjectContext);Users*user=(Users*)[NSEntityDescr

ios - 多个 NSManagedObjectContexts - 防止竞争条件和死锁

我已经阅读了大量关于后台核心数据处理的博客,但我并没有更深入地了解如何最好地管理同时触发所有BG核心数据任务并以未定义的方式通知主线程MOC时间。我知道您应该为每个NSThread拥有1个NSManagedObjectContext,并且通过订阅NSManagedObjectContextDidSaveNotification以及使用[contextperformBlock我完成了一些不错的异步任务。也就是说,我正在异步运行很多任务,我不能100%知道某些任务何时会重叠,而且我观察到竞争条件的形式是...BGMOC1开始执行任务BGMOC2开始执行任务BGMOC2完成任务并发送保存通知

iOS - CoreData - TableViewController - NSInvalidArgumentException',原因 : '+entityForName: nil is not a legal NSManagedObjectContext

我用UITableViewController创建了一个Storyboard,然后添加了一个核心数据实体。此时应用程序构建并运行时没有错误,但UITableViewController未显示任何数据。我删除了TVC并在StoryBoard中重建,但是自从我在运行应用程序并尝试打开TVC时遇到错误:*Terminatingappduetouncaughtexception'NSInvalidArgumentException',reason:'+entityForName:nilisnotalegalNSManagedObjectContextparametersearchingfore

ios - 后台上下文中 mergeChangesFromContextDidSaveNotification 后 NSManagedObjectContext 处于不一致状态

我在CoreData中遇到了一些奇怪的行为,导致我的一个MOC最终处于不一致的状态。我在一个小样本中复制了这个问题project这是我的情况的基本概要:我有两种实体类型,管道和盒子。每个管道可以包含0个或多个盒子,每个盒子恰好是一个管道的一部分在我的示例项目中:我正在创建1个管道和3个样本框,它们都指向该管道。此示例数据是在使用NSMainQueueConcurrencyType创建的MOC上创建的我创建了一个后台MOC(`NSPrivateQueueConcurrencyType')并获取所有框并只删除其中一个。此删除导致管道更新(关系中应该少一个框)当我保存后台MOC时,我尝试将更

iphone - '+entityForName : nil is not a legal NSManagedObjectContext

当我尝试将我的数据从核心数据加载到TableViewController时出现错误。我相信这是由于managedObject没有被正确传递。但我相信我是在对didFinishLaunchingWithOptions下的AppDelegate.m中的代码进行了一些研究之后才这样做的。错误***Terminatingappduetouncaughtexception'NSInvalidArgumentException',reason:'+entityForName:nilisnotalegalNSManagedObjectContextparametersearchingforentit