每次碰到我的核心数据模型的新版本时,SQLite数据库都不会填充先前版本的数据。
例如:
[MagicalRecord setupCoreDataStackWithAutoMigratingSqliteStoreNamed:@"myapp 7"];
但是,如果我回到“myapp 6”,那么用户仍然在那里。
有没有办法打破模型版本并保留SQLite的数据?
由于
答案 0 :(得分:2)
核心数据迁移不会将数据迁移到新文件,它会更新持久存储文件。除了#4之外,你的步骤是正确的,因为在那一步你告诉Core Data使用与你一直使用的不同的持久存储文件。这就是数据丢失的原因,因为您正在打开另一个新文件。您特别告诉Core Data不要将现有文件与之前的数据一起使用。如果要更新持久性存储以使用新的模型版本,则需要使用相同的文件名,以便可以找到并更新现有数据。
对于它的价值,持久存储文件名没有理由与模型名称匹配。它们可以是相同的,但如果在持久性商店名称中包含版本号,那么事情就会变得混乱。更改持久性存储名称通常不是模型迁移的一部分。
如果需要,您可以将数据移动到新文件,但这通常不是更新数据模型的一部分。