通过迁移将核心数据索引添加到某些属性

ste*_*ete 25 migration iphone indexing core-data mapping-model

出于性能原因,我想将索引属性设置为我的一些实体.我创建了一个新的核心数据模型版本来执行更改.核心数据检测到更改并将我的模型迁移到新版本,但是,没有生成索引.

如果我从头开始重新创建数据库,那么索引就在那里.我在iPhone和模拟器上检查了SQLite浏览器.只有先前格式的数据库已存在,才会出现此问题.

有没有办法手动添加索引?为此写一些sql?或者我错过了什么?我已经做了一些更重要的迁移,没有问题.但那些缺失的索引让我烦恼.

谢谢你的帮助!

Sco*_*mon 51

我有同样的问题.

根据核心数据模型版本控制和数据迁移编程指南:

Core Data对版本控制的看法是它只对影响持久性的模型特征感兴趣.

简单地向现有模型属性添加索引不会自动触发迁移,因为Core Data不会将您的两个模型模式视为不同(索引不会影响持久性).

但是,您可以通过向新索引属性添加版本哈希修改器,使Core Data看到您的模型被更改.这触发了轻量级迁移以更新现有数据库.

  • 太棒了.为我解决了它.我对核心数据的缓慢程度感到疯狂,索引似乎没有帮助!对于那些不完全理解上述解决方案含义的人...创建一个新的模型版本,点击你想要添加索引的属性,在属性窗口打勾索引中,然后查看下面的"版本哈希修改器" ,只需输入任何字符串,如"change1".速度差异很大 (14认同)