草庐IT

x-coredata

全部标签

ios - CoreData 和线程安全

我有一个单例名称CoreDataManager,它在其中注册了mergeContextChangesForNotification:+(id)sharedManager{staticCoreDataManager*mSharedManager=nil;staticdispatch_once_tonceToken;dispatch_once(&onceToken,^{mSharedManager=[[CoreDataManageralloc]init];});returnmSharedManager;}-(id)init{self=[superinit];if(self){dispatc

iOS:检查 coredata 对象是否仍然存在?

我在使用两个不同的ViewController时遇到了问题。每个都在我的应用程序的标签栏中。一个ViewController影响另一个。在我的选项卡栏项目1(ViewController1)中,我编辑了我所有的数据库对象。您可以在那里添加、删除和编辑我的数据库中的实体。在ViewController2中,您可以选择这些实体并向这些实体添加子类别并编辑它们。但是,如果您在ViewController2中的某个实体内,切换回ViewController1,删除该实体并切换回ViewController2,我的应用程序会崩溃。当然,因为这个ViewController的模型(刚刚删除的实体)

ios - 如何最好地构建代码以在 iOS 中使用 AFNetworking 和 CoreData 下载资源

我首先使用AFHTTPClient下载单个索引文档,然后使用CoreData记录每条记录。然后我需要启动一个单独的进程来下载每个单独的记录。执行此操作的最佳方法是什么?对每一个资源都提出一个请求,就让它们完成,这合理吗?可能有一百个左右。或者,我可以先加载,提交请求,然后在成功加载并提交后续请求。我正在使用CoreData更新数据库,我认为这意味着我需要为每个请求设置一个单独的NSManagedObjectContent?我也很好奇,AFHTTPClient回调是在主线程执行,还是在发起请求的线程执行?我宁愿不让主线程阻塞执行CoreDataI/O。 最佳答

ios - 为什么 Apple 使用特殊的 COREDATA_EXTERN 限定符而不只是 extern?

有时我喜欢浏览Apple源代码,看看专业人士是如何做的,有时也能学到一两件事。我现在正在查看NSManagedObjectContext.h的头文件,以及它们的全局变量,比如NSManagedObjectContextDidSaveNotification,它们是这样声明的:COREDATA_EXTERNNSString*constNSManagedObjectContextDidSaveNotification;而通常它只是:externNSString*constNSManagedObjectContextDidSaveNotificationCmd+clickingonCORED

ios - 使用 NSPredicate 从 NSFetchedResultscontroller 更新 NSManagedObject 时出现 CoreData 错误

我们有UITableViewController,其中DataSource是一个NSFetchedResultsController。单击UITableView中的一个对象后,您将被定向到一个UIViewController,您可以在其中设置一个标志(是/否),这可能会导致从NSFetchedResultsController(NSPredicate)中删除:带有标志:YES的对象显示在UITableView中带有标志:NO的对象不会显示在UITableView中我们像下面这样更新对象:objectEntityupdatedObject=self.oldobject;[updatedO

ios - 多线程的CoreData死锁

我遇到了在多个NSManagedObjectContexts和多线程场景中发生的相同死锁问题(这在SO上很常见)。在我的一些ViewController中,我的应用程序使用后台线程从Web服务获取数据,并在同一个线程中保存数据。在其他情况下,在不保存的情况下不再继续前进是有意义的(例如,当他们点击“下一步”时从表单中保留值),保存在主线程上完成。AFAIK理论上这应该没有问题,但偶尔我可以在调用时使死锁发生if(![mocsave:&error])...当死锁发生时,这似乎总是在后台线程的保存中。并非每次通话都会发生这种情况;事实上恰恰相反,我必须使用我的应用程序几分钟,然后它就会发生

ios - 我如何向 CoreData 指示对象已更改?

在我的CoreData模型中,我有一个名为Contact的实体。它有一个名为profileImage的属性,类型设置为Transformable。在Contact类(NSManagedObject的子类)中,我将profileImage从通用id更改为UploadedImage:@property(nonatomic,retain)UploadedImage*profileImage;UploadedImage类有一些自己的属性。问题是CoreData不知道UploadedImage对象的属性何时发生变化。如果仅更改这些属性,则在保存托管对象时永远不会对联系人对象调用willSave方

ios - 没有版本控制的 CoreData 迁移

现在我使用版本控制在数据库中进行任何更改。但它带来了一些问题。例如,很难将具有新数据库版本的功能分支合并到有人还添加了新版本的主/开发中。所以我的问题是:在不添加新版本的情况下更改单个xcdatamodel中的数据库是否安全?我试过了,它有效,但我在互联网上到处都看到警告说你不能这样做。iOS9+。我找到了这个:https://stackoverflow.com/a/37264096/5328417但它没有证据 最佳答案 正如@pbasdf指出的那样,从iOS9开始,您可以在不添加任何新模型版本的情况下进行轻量级迁移。源模型(以前的

ios - CoreData 的 iOS 搜索时间令人失望

我在装有iOS5.1.1的ipad上运行了一个coredata数据库。我的数据库中有大约50,000家公司。我在公司名称属性上创建了一个索引。我正在搜索此属性,有时会通过fetchRequest返回数千条记录。当返回几千条记录时,可能需要几秒钟才能从提取中返回。这使得预先输入搜索非常笨拙。我预计将来会有更大的数据库。要实现真正快速的搜索功能,我有哪些选择?谢谢。 最佳答案 我建议观看最近几次WWDC的核心数据性能视频。他们经常谈论改善这种瓶颈的策略。视频中的一些建议:将名称字段去规范化为单独的“不区分大小写和变音符号”searchS

iOS CoreData 关系 : Use optional with or without minimum

在核心数据中,您可以将关系设置为可选,但您可以将其设置为选中或不选中最小值...检查下面的图像以了解差异。我认为我注意到的是,当您使用如下谓词搜索对象时:@"object!=%@",objectToSearchFor,第一个设置返回nil但第二个设置没有。我可能会弄错,但有人知道这两种设置之间的区别吗?附言我不知道这是否重要,但我使用SQLite作为数据库引擎。 最佳答案 NSRelationshipDescriptionClassReference中有一些关于此的文档:CardinalityThemaximumandminimum