我有一个 NSEntity
(Cloth
),其属性 (type
) 是从预定义的 NSString< 列表中填充的
值,即 Poncho 、Jacket、Coat、Gown、Top、Suit 等。
我想获取所有 Cloth 记录,以便根据为 type
定义的顺序对记录进行排序。即 Poncho 的所有记录都在顶部,然后是 Jacket,然后是 Coat,然后是 Gown,然后是 Top,然后是 Suit,等等。
Poncho …
Poncho …
Poncho …
Jacket …
Jacket …
Coat …
Coat …
Coat …
Gown …
Gown …
Top …
Top …
Top …
Top …
Suit …
Suit …
此顺序不是升序或降序,而是自定义的。我如何获取 Cloth
记录,以便它们按此(定义的)顺序返回?
最佳答案
核心数据获取请求只能对存储在 SQLite 数据库中的属性进行排序(请参阅“核心数据编程指南”中的 Fetching Managed Objects 和 Fetch Predicates and Sort Descriptors。)
您有以下选择:
获取所有对象,然后使用自定义排序描述符对它们进行排序。但是,如果您在 TableView 中使用获取的结果 Controller ,这将无济于事。
在
Cloth
实体中存储一个额外的整数属性order
并将其用作排序键。这可能是最容易实现的一个,但您当然会有一些冗余。您可以定义另一个实体
Type
,而不是将类型存储为字符串属性,它具有属性name
和order
,并且从Cloth
到Type
的type
关系。在这种情况下,您可以对键路径type.order
进行排序。
关于ios - 核心数据获取请求的复杂排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13044830/