簡體   English   中英

將核心數據與SwiftUI一起使用

[英]Using Core Data with SwiftUI

我在學習SwiftUI方面取得了進步,但在使用Core Data時我遇到了困難。

  • 模型對象 - 我創建了幾個具有所需屬性和關系的實體
  • ??? 我不知道從哪里開始。 如何讓SwiftUI與Core Data交談?
  • SwiftUI - 我有一些基本的布局工作並顯示來自某些臨時類的數據,但是它們沒有核心數據的意識

我花了最近幾天在這個主題上搜索和閱讀所有內容,但我不知道如何開始解決這個問題。

任何人都可以概述使用SwiftUI使用Core Data的基本步驟嗎?

更新:

我在Twitter上得到了一些額外的反饋,一個開發人員建議SwiftUI列表可能不適合使用大數據集的Core Data。 在這里閱讀帖子: https//twitter.com/numist/status/1141012785825845248

這是我將在我的應用程序中采用的方法。

  • 列表視圖:
    • UITableViewController(帶有FetchedResultsController)
    • 管理與Core Data存儲的連接
    • 使用依賴項注入將記錄傳遞到詳細信息視圖
  • 細節/編輯視圖:
    • 在可能的情況下使用UIHostingController構建它們
    • 使用SwiftUI Forms來創建簡單的數據輸入表單
    • 通過依賴注入接收數據
    • 將數據復制到臨時BindableObject類型
      • 使本地UI有機會獲得臨時記錄
      • 退出時將臨時數據保存回實際記錄

更新2 - 2019.08.14

Xcode beta 5具有一些新的Core Data功能。 我使用此博客文章中的信息來獲取我需要的大部分內容。

您可以為您的Core-Data邏輯編寫一個包裝器,如EntityManager,然后在BindableObject中使用它

class PersonStore: BindableObject {
  var didChange = PassthroughSubject<Void, Never>()

  var persons: [PersonEntity] = [] {
      didSet {
          didChange.send(())
      }
  }

  func fetchPersons(matching name: String) {
    // make you core data query here and assign it to persons property
  }
}

一旦查詢完成並賦值給person屬性,SwiftUI將重新加載View以讀取新值。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM