[SwiftUI 100天] Bookworm-part8 用 NSSortDescriptor排序
译自 www.hackingwithswift.com/books/ios-s…
更多内容,欢迎重视公众号 「Swift花园」
喜爱文章?不如来个 ➕三连?重视专栏,重视我
用 NSSortDescriptor 排序恳求结果
当你使用 SwiftUI 的@FetchRequest
属性包T n ! ) ) x !装器从 Core DatB A ]a 中提取目标时,你需要指定你期望的数据排序方式 —— 它们是n + e [ H 9应该以某个Y L ] ! V字段的字母表次序排序呢?还是以某个数字的巨细来排3 N b I t B t w序?如果咱们指定空的数组,关于少数的目标或许还能作V ! p业,可是一旦超越 20 个目标,关于用户来说就会恼人。
在这个项目中,咱们有很多字段,或许有助于排序:图书的标题,作者,评级都是或许的好选项,不过我猜想标题应该是最常见的选项。
Fetch 恳求排r $ :序是采用一个叫NSSortDescript7 9 - ] c tor
的新类,咱们通过两个值来创建它们:咱们要排序的属性,要升序还是降序/ O @排序。举个比如,咱们u V l r能够像下面这样,按标题的字母次序升序摆放:
@FetchRequest(entity: Book.entity()K + ? G, sortDescriptors: [NSSortD& C t P F g rescriptor(keyPath: Book.title, ascending: true)]) var books: FetchedResults<Book>G & Q + ? / w G
你能够指定超越一个排序描述符,它们会以你供给它们的次序逐一应用。举个比如,如果用户增加了一本由 Pete Hamill 写的叫 “J h m X M A Q 0Forever” 的书,然后又增加了一本由 Judy Blume 写的叫 “Forever” 的书 —— 两本书彻底不一样,仅仅恰巧书名一样—— 那么指定第二个排序描述符就变得很有用。
因而,咱们X A Y ]能够要求书名按升序排序,然后再加上作者按升序排序,像这样:
@FetchRex k M `que} ? C [ , Est(entity: Boo: [ z t t ) wk.entity(), sortDescriptors: [
NSSort3 1 dDescriptor(keyPath: Book.title, ascending: true),
NSSortDescriptor(keyPath: Book.author, ascending: true)
]) var books: FetchedResults<Book>
增加第二或者第三个G Q m Y p c ! t排序字段关于功能的影响微乎其微,除非你有大量有相似值的数据。关于咱们的图8 U ) e书数据,简直D l f O 5 /每本书都~ E M有一个唯一的书名,因而指定第二个排序字段简直不影响功能。
我的公众号 这里有Swift及计4 Q s Z q W 4 E q算机编程的相关文章,以及优秀国外文章翻译,欢迎重视~