迁移对象模型时在核心数据中添加具有增量值的属性

     2023-02-24     74

关键词:

【中文标题】迁移对象模型时在核心数据中添加具有增量值的属性【英文标题】:Adding attribute with incremented value in coredata when migrating object model 【发布时间】:2013-04-18 22:24:28 【问题描述】:

我正在开发的 iphone 应用程序中有一个由 coredata 管理的 Bet 对象。

我想为这个赌注对象添加一个 UID (betnum) 属性,以便将来我可以使用这个 UID 将赌注推送到服务器,以了解它是否已经存在于服务器上。我知道这将涉及我更新 iPhone 应用程序的版本,将此属性添加到 Bet 类并将此属性设置为已由先前版本的核心数据管理的所有 Bet 对象的递增值(以及任何新的)。

为此,我需要使用Lightweight Migration 或创建我自己的Mapping Model 来迁移对象模型。我已经读过我应该尽可能使用轻量级迁移,因为创建自己的映射模型会变得混乱。我知道可以使用轻量级迁移将属性添加到现有对象,但我不知道如何通过自动递增或类似的方式设置特定值。

我可以为此使用轻量级迁移吗?我是否使用轻量级迁移,然后使用某种后迁移挂钩或 onAppUpdate 方法在迁移后设置代码中的值?还是我注定要创建自己的映射模型?

【问题讨论】:

【参考方案1】:

不,您不能为此使用轻量级迁移,或者至少在事后没有一些额外的工作。如果您只是添加一个属性,那么轻量级迁移会起作用,但它不包括为新属性设置值。您可以 (a) 使用其他迁移方案之一并在迁移期间添加您的 UID 值,或者 (b) 使用轻量级迁移但添加一个后处理步骤,您可以在其中运行数据存储并设置新值。

另外,请记住,Core Data 没有自动递增值。您必须计算出每个实例所需的值。

【讨论】:

鉴于我所读到的关于编写自己的映射模型的内容,b) 听起来是最好的选择。请您指出一些描述如何添加此后处理步骤的文档的方向吗? 这将是非常通用的,我无法想象有人专门记录了它。获取需要 UID 的每个对象,设置每个对象的 UID 值,并保存更改。 我更多地指的是在什么时候,但我想在启动“PersistentStoreCoordinator”后在“persistentStoreCoordinator”中我应该尝试获取“managedObjectModel”并检查它是否需要在那里添加值,看看是否value 是 nil,除非你有更好的建议? 这听起来很对。添加持久化存储后尽快运行检查。

核心数据模型迁移步骤

】核心数据模型迁移步骤【英文标题】:Coredatamodelmigrationsteps【发布时间】:2015-02-1122:55:03【问题描述】:我的迁移遇到了一些问题。在迁移之前,我的模型中有2个表:食物:名称(字符串)、类别(字符串)等...CartFood:名称... 查看详情

迁移复杂的核心数据模型

】迁移复杂的核心数据模型【英文标题】:Migratingcomplexcoredatamodel【发布时间】:2011-10-0423:56:08【问题描述】:我有几个关于核心数据模型迁移的问题。我有一个非常复杂的数据模型,其中包含几个实体继承案例。我打算在新版... 查看详情

核心数据:迁移具有自引用属性的实体

】核心数据:迁移具有自引用属性的实体【英文标题】:CoreData:migratingentitieswithself-referentialproperties【发布时间】:2009-10-3017:56:14【问题描述】:我的核心数据模型包含一个实体Shape,它有两个自引用关系,这意味着四个属性。... 查看详情

核心数据迁移问题:“持久存储迁移失败,缺少源托管对象模型。”

】核心数据迁移问题:“持久存储迁移失败,缺少源托管对象模型。”【英文标题】:CoreDatamigrationproblem:"Persistentstoremigrationfailed,missingsourcemanagedobjectmodel."【发布时间】:2010-03-2212:19:48【问题描述】:背景可可非文档核... 查看详情

核心数据模型版本控制和数据迁移

】核心数据模型版本控制和数据迁移【英文标题】:CoreDataModelVersioningandDataMigration【发布时间】:2012-12-1306:32:29【问题描述】:我想更新应用程序版本,但是在新版本中我在核心数据中添加了两个新属性,我想将数据从旧版本迁... 查看详情

在早期开发过程中轻松迁移核心数据,此时数据丢失是可以接受的

】在早期开发过程中轻松迁移核心数据,此时数据丢失是可以接受的【英文标题】:EasyCoreDatamigrationduringearlydevelopment,whenDataLossisexpectedandacceptable【发布时间】:2016-05-2423:17:26【问题描述】:当CoreData应用程序处于早期开发阶段时... 查看详情

更改未保存在核心数据模型中(例如删除对象)

】更改未保存在核心数据模型中(例如删除对象)【英文标题】:ChangesarenotsavedintheCoreDataModel(ex.deleteobject)【发布时间】:2014-07-1513:09:35【问题描述】:我有一个显示核心数据模型对象的tableviewcontroller。我在其导航栏中有一个按... 查看详情

更改某些实体中某些属性的类型后如何迁移核心数据模型?

】更改某些实体中某些属性的类型后如何迁移核心数据模型?【英文标题】:HowtomigratecoredatamodelafterIchangedtypesforsomeattributesinsomeentities?【发布时间】:2015-10-2913:10:02【问题描述】:好的,我有6个实体:WLComment、WLItem、WLPortal、WLS... 查看详情

核心数据模型迁移

】核心数据模型迁移【英文标题】:Coredatamodelmigration【发布时间】:2014-02-0308:34:24【问题描述】:我想迁移两个模型的核心数据。根据苹果文档,有两种方法可以迁移模型,如轻量级迁移和映射模型。我的困惑是在哪种情况下... 查看详情

核心数据 - 检测获取对象中的相等属性

】核心数据-检测获取对象中的相等属性【英文标题】:CoreData-detectequalpropertiesinfetchedobjects【发布时间】:2014-02-1308:46:14【问题描述】:我的核心数据模型:Contact=======namephonenumber(unique)我需要显示具有以下条件的联系人的表格视... 查看详情

如果我将模型中的属性类型从 NSString 更改为 NSDate,是不是需要核心数据迁移

...中的属性类型从NSString更改为NSDate,是不是需要核心数据迁移【英文标题】:IsCoreDataMigrationnecessaryifIchangethetypeofanattributeinthemodelfromNSStringtoNSDate如果我将模型中的属性类型从NSString更改为NSDate,是否需要核心数据迁移【发布时间... 查看详情

如何添加和查看核心模型关系的数据

】如何添加和查看核心模型关系的数据【英文标题】:Howtoaddandviewdataofacoremodelrelationship【发布时间】:2020-06-0614:25:22【问题描述】:我是CoreData的新手,我知道如何从实体中添加读取数据。我有两个实体:使用属性名称进行训练... 查看详情

我应该如何迁移我的核心数据?

】我应该如何迁移我的核心数据?【英文标题】:HowshouldImigratemycoredata?【发布时间】:2012-08-2612:12:04【问题描述】:我的应用程序以前版本中的核心数据存储与当前版本的不同之处在于以下方面:缺少属性新属性需要更改的属... 查看详情

涉及新实体和一对多关系的核心数据迁移

】涉及新实体和一对多关系的核心数据迁移【英文标题】:Coredatamigrationinvolvinganewentityandato-manyrelationship【发布时间】:2011-04-0518:27:07【问题描述】:我正在尝试向我的核心数据模型添加一个新实体(例如B,具有两个“双重”属... 查看详情

核心数据版本控制和迁移

】核心数据版本控制和迁移【英文标题】:Coredataversioningandmigration【发布时间】:2011-08-1105:38:35【问题描述】:我有已发布应用的旧版核心数据模型。现在,在应用程序的下一个版本中,我将核心数据模型迁移到新模型。有没有... 查看详情

如何仅将具有不同属性的对象添加到核心数据到多关系 NSSet

】如何仅将具有不同属性的对象添加到核心数据到多关系NSSet【英文标题】:HowtoOnlyAddObjectswithDistinctAttributestoCoreDatato-manyRelationshipNSSet【发布时间】:2013-08-1619:28:12【问题描述】:假设我有一个核心数据实体ShapesEntry,其中包含... 查看详情

核心数据轻量级迁移属性重命名

】核心数据轻量级迁移属性重命名【英文标题】:CoreDataLightweightMigrationAttributeRenaming【发布时间】:2011-11-0615:25:36【问题描述】:我知道StackOverflow中有很多关于核心数据迁移的问题,但我找不到解决问题的方法。通过将源模型... 查看详情

核心数据手动迁移

】核心数据手动迁移【英文标题】:coredatamanualmigration【发布时间】:2014-07-2617:19:47【问题描述】:我正在尝试在我的项目中迁移到一个完全不同的新模型。对于轻量级迁移而言,这些更改太多了,我认为最好的方法是遍历***对... 查看详情