我有一个非常烦人的问题。我有一个目前正在生产中的“CoreData”应用程序,一切正常。我有该应用程序的更新,但只要在原始应用程序上安装更新,该应用程序就会在下面的代码行崩溃。[_persistentStoreCoordinatoraddPersistentStoreWithType:NSSQLiteStoreTypeconfiguration:nilURL:storeURLoptions:optionserror:&error]我收到的错误是“无法将获取请求与获取的属性描述(实体模型不匹配)一起使用”。CoreData模型发生了变化,但我为我的变化创建了一个新版本的模型,所以它应该将
是否有任何方法可以为实体映射添加额外的检查?我从服务器返回了一个具有相同标识属性的对象,我需要检查上次修改日期是否比存储在本地存储中的对象更新。默认情况下,如果标识属性相同,RestKit将覆盖我的本地实例。映射是在子上下文中完成的,我试图在将子上下文保存回父上下文之前比较来自服务器的新值,但我找不到任何简单的方法来拦截合并。有什么建议吗? 最佳答案 您应该考虑为此使用KVC验证,因为它可以让您访问现有对象和新的传入值,并为您提供中止该特定对象映射的选项。检查this. 关于ios-Re
我正在尝试进行自定义核心数据迁移。在旧数据模型中,我有一个带有状态字段的联系人表。现在,如果状态==2,我希望为联系人表中的每条记录创建另一个表-“推荐”。推荐表中的属性与联系人表中的属性完全不同。这样做的好方法是什么。根据我的阅读,我似乎应该使用自定义核心数据迁移策略并覆盖-(BOOL)createDestinationInstancesForSourceInstance:(NSManagedObject*)src¬entityMapping:(NSEntityMapping*)mapmanager:(NSMigrationManager*)mgrerror:(NSError**)e
场景:我在IOS上使用配置为对SQLite数据库进行操作的Magicalrecord。默认情况下,MR配置coredata以序列化所有写回主线程上的父上下文。我使用的模式是,当我不在主线程上时,我使用诸如MagicalRecord:MR_saveWithBlockAndWait之类的东西为核心数据操作创建一个单独的NSManagedObjectContext。神奇的记录创建上下文,将其连接到父上下文,执行您在回调block中指定的任何操作,最后保存。重要的是,应该在操作完成之前提交保存。当我完成后台线程的工作时,我通常会通知UI发生了一些事情;例如:下载/上传/更改了某些内容。然后在U
我正在尝试将一个核心数据实体读入NSMutableArray,但是我一直在取回大量奇怪的数据。例如,当我取回值的NSDictionary时,它看起来像这样data:{companyName="WPremium";desc="Test";guid="Otq12342";install=("0x1e59e910","0x1e59e8e0","0x1e59e830","0x1e59e930","0x1e59e850","0x1e59e890","0x1e59e8b0","0x1e59e7c0","0x1e5957e0","0x1e59e810","(...and16more...)");我想
我有两个NSManagedObject子类。航类和飞机。每个Flight都与一架Aircraft相关联。当用户创建一个航类时,我只做以下事情:NSEntityDescription*entity=[NSEntityDescriptionentityForName:@"Flight"inManagedObjectContext:self.managedObjectContext];self.flight=[[Flightalloc]initWithEntity:entityinsertIntoManagedObjectContext:nil];创建对象但不要将其插入到managedObj
我正在使用RestKit来管理我的CoreData对象与我的服务器的同步,到目前为止它运行良好。然而,我有一个用例,我不确定继续使用RestKit的最佳方法是什么。RestKit目前会删除服务器上不再存在的孤立托管对象,这很好,但有时,我不想删除某些对象。例如,假设我创建了一个托管对象,但我当时无法访问互联网。我保存了托管对象,但无法将其保存在服务器上。我希望稍后当我可以访问服务器时将其保存在服务器上,但目前,该对象将在下一轮被删除,因为RestKit会发现这些对象在最新的服务器响应中不存在,因此也会将它们标记为删除。我可以在对象上放置一个“草稿”标志,并在获得服务器更新之前标记它们,
我有一个相当基本的问题,我确信我遗漏了一些基本的东西,但这是我第一次使用RK+CD,所以任何帮助都将不胜感激。我有一个数据集:@interfaceA:NSManagedObject{NSString*content;NSString*userId;}我从一个View将其发布到服务器。在另一个View中,我得到了这些数据集的列表。因此,我从服务器获得了一组以下项目。理想情况下,我应该能够创建一个基类A,我可以将其用于POST和GET。但是由于我将GET响应存储在CoreData中,所以A是一个NSManagedObject。GET工作得很好,我可以显示我从服务器获得的所有条目,但这里是P
我正在开发一套应用程序,这些应用程序将有很多共同的模型代码。我正在使用CoreData,所以我目前计划只为所有不同的应用程序使用一个模型文件,尽管并非所有应用程序都使用模型中定义的所有实体。我已阅读有关可以在托管对象模型中定义以仅获取所有实体的子集的核心数据配置。我想知道我是否可以使用这些来优化我的应用程序中的CoreData使用。考虑以下场景:我有三个应用程序,App1、App2和App3。他们有一个具有以下实体的共享托管对象模型。A、A1、A2、A3、B、C、D而A是抽象的,A1、A2和A3都继承自A。A1、A2和A3实体中的每一个都有大约10-20个属性/关系。现在App1仅使用
我需要找到现有持久存储中使用的模型版本,以便在自动轻量级迁移后进行一些后处理。我们有一些设备处于无法获取其持久存储的元数据的状态。当我们初始化CoreData堆栈时,我们使用NSPersistentStoreCoordinator的+metadataForPersistentStoreOfType:URL:error:方法来获取现有持久存储的元数据。然后我们检查它的元数据是否与当前对象模型中的元数据兼容,以决定我们是否需要进行迁移。我们还从这两组元数据中提取模型版本——因此在自动轻量级迁移之后,我们可以根据模型版本进行一些简单的后处理。问题是+metadataForPersistent