如何基于NSNumber变量结合SortDescriptor使用@FetchRequest
解决Core Data中NSNumber类型属性的排序问题
不需要修改@NSManaged标记的year属性类型,Core Data原生支持对NSNumber类型的持久化属性进行排序,直接针对原key path创建SortDescriptor即可:
@FetchRequest(sortDescriptors: [ SortDescriptor(\.artist), SortDescriptor(\.year) // 直接使用NSNumber?类型的year属性 ]) private var items: FetchedResults<YourEntity>
如果遇到Swift类型推断报错,可以显式指定类型:
@FetchRequest(sortDescriptors: [ SortDescriptor(\.artist), SortDescriptor(\YourEntity.year) as SortDescriptor<YourEntity> ]) private var items: FetchedResults<YourEntity>
若需要按年份数值调整排序顺序,直接指定order参数:
SortDescriptor(\.year, order: .reverse) // 按年份降序排列
注意:Core Data的排序依赖持久化存储中的属性,计算属性不会被Core Data识别,因此不能用于@FetchRequest的排序规则,必须使用@NSManaged标记的实体属性。
内容的提问来源于stack exchange,提问作者Germán
相关产品推荐
相关产品推荐

