Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/97.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 保存核心数据?_Ios_Objective C_Cocoa Touch_Cocoa_Core Data - Fatal编程技术网

Ios 保存核心数据?

Ios 保存核心数据?,ios,objective-c,cocoa-touch,cocoa,core-data,Ios,Objective C,Cocoa Touch,Cocoa,Core Data,我有一个功能性应用程序,主要是面向数据库的。我的客户端目前正在使用该应用程序,它有许多预先存在的已保存数据(注意:这些数据都是本地数据,而不是保存在在线数据库中)。问题是,我知道当我更新数据模型时,我将不得不卸载,然后重新安装应用程序,因为否则它将由于数据模型中的不一致而崩溃。在更新我的数据模型的同时,有没有办法将数据保存在那里 我知道当我更新我的数据模型时,我将不得不卸载,然后重新安装应用程序,因为否则它将由于数据模型中的不一致而崩溃 不是真的,除非你懒得处理变化。核心数据支持将数据从数据模型

我有一个功能性应用程序,主要是面向数据库的。我的客户端目前正在使用该应用程序,它有许多预先存在的已保存数据(注意:这些数据都是本地数据,而不是保存在在线数据库中)。问题是,我知道当我更新数据模型时,我将不得不卸载,然后重新安装应用程序,因为否则它将由于数据模型中的不一致而崩溃。在更新我的数据模型的同时,有没有办法将数据保存在那里

我知道当我更新我的数据模型时,我将不得不卸载,然后重新安装应用程序,因为否则它将由于数据模型中的不一致而崩溃

不是真的,除非你懒得处理变化。核心数据支持将数据从数据模型的一个版本迁移到新版本,以便更新现有数据存储以使用新模型,而无需卸载或其他极端步骤。在大多数情况下,它甚至是自动的——你只需要告诉它如何应对变化。具体来说,在添加持久存储时使用
选项
参数:

NSDictionary *options = @{NSMigratePersistentStoresAutomaticallyOption:@YES,
    NSInferMappingModelAutomaticallyOption:@YES};


if (![psc addPersistentStoreWithType:NSSQLiteStoreType configuration:nil URL:storeURL options:options error:&error]) {
    ....
}
如果您的更改仅包括以下一项或多项,则此选项有效:

  • 添加或删除属性
  • 更改属性的“可选”标志(前提是如果将其设置为非可选,则提供默认值)
  • 重命名实体或属性
  • 添加、删除或重命名实体
  • 添加父实体或子实体,或将属性移动到层次结构中的不同点
  • 将关系从一个更改为多个
如果要重命名任何内容,则需要设置重命名标识符,以便核心数据知道如何迁移

如果这还不够,则核心数据通过两种不同的方式支持非自动迁移。这在苹果的文档中有详细的介绍,我在这里不再赘述

我知道当我更新我的数据模型时,我将不得不卸载,然后重新安装应用程序,因为否则它将由于数据模型中的不一致而崩溃

不是真的,除非你懒得处理变化。核心数据支持将数据从数据模型的一个版本迁移到新版本,以便更新现有数据存储以使用新模型,而无需卸载或其他极端步骤。在大多数情况下,它甚至是自动的——你只需要告诉它如何应对变化。具体来说,在添加持久存储时使用
选项
参数:

NSDictionary *options = @{NSMigratePersistentStoresAutomaticallyOption:@YES,
    NSInferMappingModelAutomaticallyOption:@YES};


if (![psc addPersistentStoreWithType:NSSQLiteStoreType configuration:nil URL:storeURL options:options error:&error]) {
    ....
}
如果您的更改仅包括以下一项或多项,则此选项有效:

  • 添加或删除属性
  • 更改属性的“可选”标志(前提是如果将其设置为非可选,则提供默认值)
  • 重命名实体或属性
  • 添加、删除或重命名实体
  • 添加父实体或子实体,或将属性移动到层次结构中的不同点
  • 将关系从一个更改为多个
如果要重命名任何内容,则需要设置重命名标识符,以便核心数据知道如何迁移


如果这还不够,则核心数据通过两种不同的方式支持非自动迁移。苹果的文档中详细介绍了这一点,我在这里不再赘述。

这正是我想要的。我不知道我可以自动迁移。谢谢。这正是我想要的。我不知道我可以自动迁移。谢谢