繁体   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