[SwiftUI 100天] Bookworm-part8 用 NSSortDescriptor排序
2020/4/24 23:22:54
本文主要是介绍[SwiftUI 100天] Bookworm-part8 用 NSSortDescriptor排序,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
译自 www.hackingwithswift.com/books/ios-s…
更多内容,欢迎关注公众号 「Swift花园」
喜欢文章?不如来个 🔺💛➕三连?关注专栏,关注我 🚀🚀🚀
用 NSSortDescriptor 排序请求结果
当你使用 SwiftUI 的@FetchRequest
属性包装器从 Core Data 中提取对象时,你需要指定你希望的数据排序方式 —— 它们是应该以某个字段的字母表顺序排序呢?还是以某个数字的大小来排序?如果我们指定空的数组,对于少量的对象可能还能工作,但是一旦超过 20 个对象,对于用户来说就会恼人。
在这个项目中,我们有很多字段,可能有助于排序:图书的标题,作者,评级都是可能的好选项,不过我猜测标题应该是最常见的选项。
Fetch 请求排序是采用一个叫NSSortDescriptor
的新类,我们通过两个值来创建它们:我们要排序的属性,要升序还是降序排序。举个例子,我们可以像下面这样,按标题的字母顺序升序排列:
@FetchRequest(entity: Book.entity(), sortDescriptors: [NSSortDescriptor(keyPath: \Book.title, ascending: true)]) var books: FetchedResults<Book>复制代码
你可以指定超过一个排序描述符,它们会以你提供它们的顺序逐个应用。举个例子,如果用户添加了一本由 Pete Hamill 写的叫 “Forever” 的书,然后又添加了一本由 Judy Blume 写的叫 “Forever” 的书 —— 两本书完全不一样,只是凑巧书名一样—— 那么指定第二个排序描述符就变得很有用。
因此,我们可以要求书名按升序排序,然后再加上作者按升序排序,像这样:
@FetchRequest(entity: Book.entity(), sortDescriptors: [ NSSortDescriptor(keyPath: \Book.title, ascending: true), NSSortDescriptor(keyPath: \Book.author, ascending: true) ]) var books: FetchedResults<Book>复制代码
添加第二或者第三个排序字段对于性能的影响微乎其微,除非你有大量有相似值的数据。对于我们的图书数据,几乎每本书都有一个唯一的书名,因此指定第二个排序字段几乎不影响性能。
我的公众号 这里有Swift及计算机编程的相关文章,以及优秀国外文章翻译,欢迎关注~
这篇关于[SwiftUI 100天] Bookworm-part8 用 NSSortDescriptor排序的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2022-10-05Swift语法学习--基于协议进行网络请求
- 2022-08-17Apple开发_Swift语言地标注释
- 2022-07-24Swift 初见
- 2022-05-22SwiftUI App 支持多语种 All In One
- 2022-05-10SwiftUI 组件参数简写 All In One
- 2022-04-14SwiftUI 学习笔记
- 2022-02-23Swift 文件夹和文件操作
- 2022-02-17Swift中使用KVO
- 2022-02-08Swift 汇编 String array
- 2022-01-30SwiftUI3.0页面反向传值