Tag: 核心数据

在iOS 5上实现快速有效的核心数据导入

问题 :如何获取我的子上下文以查看父上下文中保留的更改,以便触发我的NSFetchedResultsController更新UI? 这是设置: 你已经有一个应用程序下载并添加大量的XML数据(大约200万条logging,每个logging的大小约为普通段落的文本大小).sqlite文件的大小约为500 MB。 将这些内容添加到Core Data中需要时间,但是您希望用户能够在数据逐渐加载到数据存储中的同时使用该应用程序。 对于用户来说,它是不可见的,不可见的,因为大量的数据正在被移动,所以没有挂起,没有抖动:滚动像黄油。 不过,应用程序更有用,数据添加的越多,所以我们不能永远等待将数据添加到Core Data存储区。 在代码中,这意味着我真的想在导入代码中避免这样的代码: [[NSRunLoop currentRunLoop] runUntilDate:[NSDate dateWithTimeIntervalSinceNow:0.25]]; 该应用程序只有iOS 5,所以它需要支持的最慢的设备是iPhone 3GS。 以下是我迄今用来开发当前解决scheme的资源: 苹果的核心数据编程指南:有效地导入数据 使用自动释放池来减less内存 关系成本。 导入单位,然后在最后修补关系 不要询问是否可以帮助它,它会以O(n ^ 2)的方式减慢速度 批量导入:保存,重置,排出和重复 closures导入时的撤消pipe理器 iDeveloper电视 – 核心数据性能 使用3个上下文:Master,Main和Confinement上下文types iDeveloper TV – Mac,iPhone和iPad更新的核心数据 使用performBlock在其他队列上运行保存会使事情变得更快。 encryption会减慢速度,如果可以的话关掉它。 导入和显示核心数据中的大型数据集Marcus Zarra 您可以通过给当前运行循环留出时间来减慢导入速度,这样用户就能感觉到stream畅。 示例代码certificate,可以执行大量的导入操作并保持UI的响应速度,但速度不及3个上下文和asynchronous存储到磁盘的速度。 我当前的解决scheme 我有3个NSManagedObjectContext实例: masterManagedObjectContext – 这是具有NSPersistentStoreCoordinator并负责保存到磁盘的上下文。 我这样做,所以我的保存可以是asynchronous的,因此非常快。 我这样创build它: masterManagedObjectContext = [[NSManagedObjectContext alloc] initWithConcurrencyType:NSPrivateQueueConcurrencyType]; [masterManagedObjectContext […]

如何从特定的对象ID获取核心数据对象?

我可以使用以下代码轻松获取Core Data中的对象ID: NSManagedObjectID *moID = [managedObject objectID]; 但是,有没有办法通过给它一个特定的对象ID来让对象脱离核心数据存储? 我知道我可以通过使用NSFetchRequest这样做: NSFetchRequest *fetchRequest = [[NSFetchRequest alloc] init]; NSEntityDescription *entity = [NSEntityDescription entityForName:@"Document" inManagedObjectContext:managedObjectContext]; [fetchRequest setEntity:entity]; NSPredicate *predicate = [NSPredicate predicateWithFormat:@"(objectID = %@)", myObjectID]; [fetchRequest setPredicate:predicate]; 但是,我想这样做不会启动自己的获取请求。 有任何想法吗?

在executeFetchRequest上枚举时“集合发生了变化”

我被困在一个问题上几个小时,并阅读了关于这个在stackoverflow(并应用每一个build议发现)的一切,我现在正式需要帮助。 ; O) 这里是上下文: 在我的iPhone项目中,我需要在后台导入数据并将其插入托pipe对象上下文中。 遵循这里发现的build议,这就是我正在做的事情: 保存主要的moc 使用主moc使用的持久性存储协调器实例化后台moc 将我的控制器注册为后台moc的NSManagedObjectContextDidSaveNotification通知的观察者 在后台线程上调用导入方法 每次收到数据时,都将其插入到背景moc中 一旦所有的数据已被导入,保存后台moc 将更改合并到主线程中的主要moc中 取消注册我的控制器作为通知的观察者 重置并释放背景moc 有时(和随机),例外… *** Terminating app due to uncaught exception 'NSGenericException', reason: '*** Collection <__NSCFSet: 0x5e0b930> was mutated while being enumerated… 当我在后台moc上调用executeFetchRequest时,会引发…来检查导入的数据是否已经存在于数据库中。 我想知道什么是突变的设置,因为没有什么东西在导入方法外运行。 我已经包含了我的控制器和我的testing实体(我的项目由这两个类和应用程序委托,这是未经修改的)的完整代码: // // RootViewController.h // FK1 // // Created by Eric on 09/08/10. // Copyright (c) 2010 __MyCompanyName__. All […]

每个核心数据关系都必须有一个逆?

比方说,我有两个实体类: SocialApp和SocialAppType 在SocialApp我有一个属性: appURL和一个关系: type 。 在SocialAppType我有三个属性: baseURL , name和favicon 。 SocialApp关系type的目标是SocialApp中的单个logging。 例如,对于多个Flickr账户,将会有一些SocialApplogging,每个logging都持有到一个人账户的链接。 对于“Flickr”types将有一个SocialAppTypelogging,即所有SocialApplogging都会指向的logging。 当我用这个模式构build一个应用程序时,我得到一个警告,即SocialAppType和SocialApp之间没有反向关系。 /Users/username/Developer/objc/TestApp/TestApp.xcdatamodel:SocialApp.type: warning: SocialApp.type — relationship does not have an inverse 我需要一个逆,为什么?

将核心数据添加到现有的iPhone项目

我想添加核心数据到一个现有的iPhone项目,但我仍然有很多编译错误: – NSManagedObjectContext undeclared – Expected specifier-qualifier-list before 'NSManagedObjectModel' – … 我已经将Core Data Framework添加到目标(在“目标”,“添加” – “现有框架”,“CoreData.framework”)下右键单击我的项目。 我的头文件: NSManagedObjectModel *managedObjectModel; NSManagedObjectContext *managedObjectContext; NSPersistentStoreCoordinator *persistentStoreCoordinator; […] @property (nonatomic, retain, readonly) NSManagedObjectModel *managedObjectModel; @property (nonatomic, retain, readonly) NSManagedObjectContext *managedObjectContext; @property (nonatomic, retain, readonly) NSPersistentStoreCoordinator *persistentStoreCoordinator; 我错过了什么? 开始一个新项目不是一个选项… 非常感谢! 编辑抱歉,我有这些实现…但似乎像缺乏库…实施方法充满编译错误像“ managedObjectContext undeclared ”,“ NSPersistentStoreCoordinator undeclared ”,但也与“预期”)“之前NSManagedObjectContext “(虽然看起来像括号是正确的)… #pragma mark […]

如何在Xcode中删除旧的/未使用的数据模型版本

如何删除Xcode中的旧数据模型? 该选项在菜单上被禁用。 (我想删除的模型尚未公开发布 – 它们是临时的开发模型。)

cocoa核心数据有效的方法来统计实体!

我读了很多关于核心数据..但什么是一个有效的方式来计算实体types(如SQL可以做SELECT计数(1)…)。 现在我刚刚解决了这个任务,select所有与NSFetchedResultsController和获得NSArray的计数! 我相信这不是最好的方法… 谢谢

iPhone核心数据保存时未解决的错误

尝试保存时,我收到了来自核心数据的奇怪错误消息,但错误不可重现的问题(在执行不同任务时出现在不同的时间) 错误消息: Unresolved error Domain=NSCocoaErrorDomain Code=1560 UserInfo=0x14f5480 "Operation could not be completed. (Cocoa error 1560.)", { NSDetailedErrors = ( Error Domain=NSCocoaErrorDomain Code=1570 UserInfo=0x5406d70 "Operation could not be completed. (Cocoa error 1570.)", Error Domain=NSCocoaErrorDomain Code=1570 UserInfo=0x14f9be0 "Operation could not be completed. (Cocoa error 1570.)" ); } 产生错误的方法是: – (IBAction)saveAction:(id)sender { NSError *error; if (![[self managedObjectContext] save:&error]) […]

最佳实践? – 数组/字典作为核心数据实体属性

我是新的核心数据。 我注意到集合types不能作为属性types使用,并想知道将数组/字典types数据存储为属性的最有效方法是什么(例如,组成街道,城市等地址的元素的作用不需要单独的实体,并且比单独的属性/字段更方便地存储为字典/数组)。 谢谢。

Xcode 4,核心数据模型版本 – 设置当前版本

我对如何在Xcode 4中执行以下function感到困惑,以便在创build版本模型后将模型设置为使用。 devise>数据模型>设置当前版本