动漫无遮挡h纯肉亚洲资源大片丨无码h片在线观看网站丨色五月激情五月丨桃花综合久久久久久久久久网丨国产精品av在线

當(dāng)前位置:首頁 > 問答 > 正文內(nèi)容

蘋果推出 SwiftData,可替代 SwiftUI 的 Core Data

信陽門招聘2年前 (2023-07-03)問答106
印刷廠直印●彩頁1000張只需要69元●名片5元每盒-更多報價?聯(lián)系電話:138-1621-1622(微信同號)

作者 | Sergio De Simone

譯者 | 馬可薇

策劃 | Tina

蘋果于 WWDC 2023 上推出新框架 SwiftData,提供聲明性的、以 Swift 為先的 API,可在 iOS 應(yīng)用中進(jìn)行數(shù)據(jù)持久化工作。SwiftData 可輕松將一個 Swift 類轉(zhuǎn)換為一個持久化模型,非常適合同 SwiftUI 一并使用。

在幾年前通過 SwiftUI 改變了 UI 在其平臺上的定義方式后,蘋果正在邁出超越 Core Data 的第一步,即一個基于 ORM、嚴(yán)格綁定于 Objective-C 動態(tài)能力的持久化框架。

雖然 SwiftUI 所提供的 API 讓持久化模型的定義成為可能,但這種方式卻頗為繁瑣。Core Data 通常是在 Xcode 內(nèi)集成的 Schema Model 編輯器上使用,由此生成的 .xcdatamodeld 是真實(shí)之源,可被用于自動生成存根(stub)。存根所提供的基類則被用作實(shí)際模型的基類。

SwiftData 的方式則完全相反,它是將代碼看作是真實(shí)之源,并以此定義一個簡單的模型:

@Model

classRecipe {

@Attribute(.unique) varname: String

varsummary: String?

varingredients: [Ingredient]

仔細(xì)看能發(fā)現(xiàn) SwiftData 是如何依賴 Swift 5.9 中新引入的宏功能。簡而言之,@Model 宏會將 @PersistedProperty 應(yīng)用于 Recipe 類的所有屬性,并在類的實(shí)現(xiàn)中添加初始化代碼和其他的必要屬性。

由于這層額外的邏輯對開發(fā)者而言完全透明,SwiftData 得以將所有屬性映射至其底層存儲。據(jù)蘋果公司稱,持久性對象會在需要時從持久化存儲中獲取并更新。

Bool、Int、String 等簡單類型支持開箱可用,但更為復(fù)雜的類型則必須要符合 Codable 協(xié)議,才能于持久化類中使用。

如上文所述,SwiftData 與 SwiftUI 的相性很好。而事實(shí)上,@Model 宏也會讓類在符合 ObservableObject 協(xié)議的同時,讓所有持久化的屬性表現(xiàn)為 @Published 屬性的形式。此外,將 SwiftUI 視圖接入持久化模型只需使用一個新的 @Query 屬性。與 @State 和 @Binding 的使用方式相類似,每次底層數(shù)據(jù)發(fā)生變化時,@Query 可確保視圖的自動重新渲染。

SwiftData 中還提供對謂詞(Predicate)定義的支持,可用于過濾數(shù)據(jù)。編譯時對謂詞進(jìn)行檢查,并對類型不匹配的問題報編譯錯誤。此外,SwiftData 模型也可通過 CloudKit 或以 iCloud 云盤中存儲的文件形式進(jìn)行跨設(shè)備同步。

為讓開發(fā)者能更為輕松地遷移至 SwiftData,該框架支持在現(xiàn)有 Core Data 應(yīng)用中的逐步采用,在蘋果提供的演示項目中展示了如何在一個 Core Data 應(yīng)用中僅部分使用 SwiftData。

最后值得留意的是,SwiftData 并不是換了皮的 Core Data。正如蘋果于 WWDC 中所演示的,SwiftData 是借助了同 Core Data 一樣的持久化引擎,但卻是一個完全獨(dú)立的堆棧。

原文鏈接:

021yin.com/news/2023/0*/swiftdata-persistent-framework/)

十七年來奇葩大崩潰!為不讓OpenAI和谷歌白拿數(shù)據(jù),Reddit 收取巨額API 費(fèi)用還誹謗開發(fā)者,社區(qū)爆發(fā)大規(guī)模抗議

“偷”代碼建起公司、學(xué)歷造假、*天拿下1億美元卻拖欠工資,這位AI獨(dú)角獸CEO屢遭質(zhì)疑后親自回應(yīng)了

市值暴漲10519%,原來全世界搞大模型的企業(yè)都在給這位華人打工!

吉印通推出生成式AI代碼助手,覆蓋 30 種編程語言;高考生喊話馬化騰,騰訊回應(yīng);機(jī)房宕機(jī)損失過億,唯品會負(fù)責(zé)人被免職 | Q資訊

收藏0

發(fā)表評論

訪客

看不清,換一張

◎歡迎參與討論,請在這里發(fā)表您的看法和觀點(diǎn)。