SwiftUI學(xué)習(xí)100天(Day59 - 項(xiàng)目 12,第二部分)

原創(chuàng)鏈接:https://www.hackingwithswift.com/100/swiftui
以下內(nèi)容僅供學(xué)習(xí)參考:?

你準(zhǔn)備好迎接更多挑戰(zhàn)了嗎?
美國歌手兼詞曲作者克里斯蒂娜格里米曾說過,“人不是天生強(qiáng)壯的;人們一點(diǎn)一點(diǎn)地變得強(qiáng)大,遇到困難的情況,學(xué)會(huì)不逃避?!?優(yōu)秀的編碼員也是如此:當(dāng)你讀了一年的書時(shí),并沒有什么神奇的開關(guān)會(huì)被輕彈,而是隨著你面對——并解決——越來越困難的問題,你的技能會(huì)隨著時(shí)間的推移而緩慢增長。
我一直鼓勵(lì)你解決這些問題,因?yàn)榫帉懽约旱拇a并找到自己的解決方案很重要。一開始通常會(huì)出現(xiàn)一些空白頁綜合癥——你茫然地盯著屏幕,不知道從哪里開始。但這沒關(guān)系,事實(shí)上這是意料之中的。你練習(xí)得越多,就會(huì)越善于為自己找出解決方案,而今天是朝著該目標(biāo)邁出的又一步。
今天你應(yīng)該完成項(xiàng)目 12 的總結(jié)章節(jié),完成它的回顧,然后完成它的所有三個(gè)挑戰(zhàn)。

核心數(shù)據(jù):總結(jié)
Core Data 乍一看似乎是一個(gè)枯燥的話題,但它在構(gòu)建應(yīng)用程序時(shí)非常有用——你已經(jīng)看到它如何使用相對簡單的代碼添加、刪除、排序、過濾等等。是的,Swift 中的一些部分有點(diǎn)模糊——例如NSPredicate
,可以做一些改進(jìn),而且NSSet
處理起來從來都不是一件愉快的事——但是只要我們做一點(diǎn)工作,這就不再是一個(gè)問題了。
也許關(guān)于 Core Data 最重要的事情是它保證適用于所有 Apple 平臺上的所有應(yīng)用程序。這意味著無論你有什么需要,你都可以使用它:也許它是為了保存重要數(shù)據(jù),也許它只是你下載內(nèi)容的緩存;沒關(guān)系,因?yàn)?Core Data 會(huì)為你很好地管理它。
回顧你學(xué)到的東西
任何人都可以聽完教程,但要記住所教的內(nèi)容需要實(shí)際工作。我的工作是確保你從這些教程中獲得盡可能多的知識,因此我準(zhǔn)備了一個(gè)簡短的回顧來幫助你檢查你的學(xué)習(xí)情況。
單擊此處查看你在此項(xiàng)目中學(xué)到的知識:
https://www.hackingwithswift.com/review/ios-swiftui/core-data

挑戰(zhàn)
最好的學(xué)習(xí)方法之一是盡可能多地編寫自己的代碼,因此你應(yīng)該嘗試通過以下三種方式擴(kuò)展此應(yīng)用程序,以確保你完全理解正在發(fā)生的事情。
所有這三個(gè)任務(wù)都需要你修改FilteredList
我們制作的視圖:
讓它接受一個(gè)字符串參數(shù)來控制應(yīng)用哪個(gè)謂詞。你可以使用 Swift 的字符串插值將它放在謂詞中。
將謂詞字符串參數(shù)修改為一個(gè)枚舉,例如
.beginsWith
,然后將該枚舉解析為初始化程序中的一個(gè)字符串。使
FilteredList
接受一個(gè)對象數(shù)組SortDescriptor
以在其獲取請求中使用。

提示:如果你使用的是 FilteredList
的通用版本
,則你的排序描述符是 SortDescriptor<T>
類型
。如果你使用的是更簡單的非通用版本,則你的排序描述符是SortDescriptor<Singer>
.