Mus*_*afa 3 sorting core-data nssortdescriptor nsfetchrequest ios
我有一个NSEntity(Cloth)与属性(type这是从预定义的列表填充的)NSString值,即雨披,夹克,外套,袍子,顶,西服等
我想获取所有Cloth记录,以便根据已定义的顺序对记录进行排序type.即所有的雨披记录都在上面,然后是夹克,然后是外套,然后是礼服,然后是Top,然后是西装等.
Poncho? …
Poncho? …
Poncho? …
Jacket …
Jacket …
Coat …
Coat …
Coat …
Gown …
Gown …
Top …
Top …
Top …
Top …
Suit …
Suit …
Run Code Online (Sandbox Code Playgroud)
此订单不是升序或降序,而是自定义.如何获取Cloth记录以便以此(定义)顺序返回它们?
核心数据获取请求只能对存储在SQLite数据库中的属性进行排序(请参阅"核心数据编程指南"中的获取受管对象并获取谓词和排序描述符.)
您有以下选择:
获取所有对象,然后使用自定义排序描述符对它们进行排序.但是,如果您使用获取的结果控制器进行表视图,这将无济于事.
order在Cloth实体中存储其他整数属性,并将其用作排序键.这可能是最容易实现的,但当然你有一些冗余.
取而代之的存储类型为字符串的属性,你可以定义另一个实体Type拥有的属性name和order和的关系type,从Cloth到Type.在这种情况下,您可以对关键路径进行排序type.order.
实现自定义订单的唯一方法是引入类型的新属性NSNumber以跟踪订单.
[似乎在类别字符串(Poncho等)之后有更多文本,因此您实际上有许多唯一的字符串,所有字符串都必须遵循自定义顺序,只有它们按第一个单词分组.
如果您确实希望将此逻辑与其余数据分开,则可以创建ClothType具有属性的新实体,name并sortOrder与您的Cloth实体建立关系.
另一种方案是将sort属性与每个"主要"类别相乘,例如10000,并为同一类别中的每个后续类别添加1.
| 归档时间: |
|
| 查看次数: |
2227 次 |
| 最近记录: |