欧美xxxx色视频在线观看_久久亚洲私人国产精品va_热re99久久精品国产99热_丰满人妻一区二区三区无码av_99热久久这里只精品国产www

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

蘋(píng)果推出 SwiftData,可替代 SwiftUI 的 Core Data

印刷廠直印●彩頁(yè)1000張只需要69元●名片5元每盒-更多報(bào)價(jià)?聯(lián)系電話:138-1621-1622(微信同號(hào))

作者 | Sergio De Simone

譯者 | 馬可薇

策劃 | Tina

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

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

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

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

@Model

classRecipe {

@Attribute(.unique) varname: String

varsummary: String?

varingredients: [Ingredient]

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

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

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

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

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

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

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

原文鏈接:

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

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

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

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

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

收藏0

發(fā)表評(píng)論

訪客

看不清,換一張

◎歡迎參與討論,請(qǐng)?jiān)谶@里發(fā)表您的看法和觀點(diǎn)。