COLLATE for Core Data创建INDEX

时间:2011-01-17 23:33:12

标签: iphone core-data

简短问题:

有没有办法告诉CoreData在创建INDEX时使用COLLATE?

详细说明:

我需要按名称显示不区分大小写的排序列表中的客户端列表。 “name”字段在xCode中标记为INDEXING。我使用以下排序描述符:

sortDescriptor = [NSSortDescriptor sortDescriptorWithKey:@"name" ascending:YES selector:@selector(localizedCaseInsensitiveCompare:)];

这导致CoreData的以下查询。一切都好到现在。

SELECT 0, t0.Z_PK, t0.Z_OPT, t0.ZNAME FROM ZCLIENT t0 WHERE  t0.Z_PK IN  (?, ?, ?)  ORDER BY t0.ZNAME COLLATE NSCollateLocaleSensitiveNoCase  LIMIT 20

但是如果我查看CoreData创建的INDEX,它在创建INDEX时不会使用COLLATE。这意味着所有不区分大小写的查询对于大型数据集来说都会很慢。

CREATE INDEX ZCLIENT_ZNAME_INDEX ON ZCLIENT (ZNAME)

有没有办法创建基于COLLATE的INDEX?有没有办法在xCode中指定它?

1 个答案:

答案 0 :(得分:3)

没有。如果您希望能够这样做,请提交an enhancement request。如果您可以包含一个示例项目,展示COLLATE如何使事情变得更加出色和更快,那么您可以从CoreData团队获得额外的奖励积分。