【问题标题】:Saving document-based application with table view in swift使用表格视图快速保存基于文档的应用程序
【发布时间】:2019-08-10 11:36:40
【问题描述】:

我在 swift 中创建了一个非常简单的 macOS 应用程序,它只包含一个 tableView。表格视图的行显示了一个类的属性。

现在我考虑将其保存到文件中。很久以前我已经在 Objective-C 中做过类似的事情了,但是已经发生了很多变化。

搜索了一段时间后,我还没有找到如何做到这一点。也许我搜索了错误的关键字,但这是我已经发现的:

1) 我可以使用 Document.swift 中的数据功能

2) 我需要在这个函数中返回数据

还缺少什么来完成这个,是如何在数据函数中返回一个表格视图的数据。 更准确地说:如何编码 tableView?我应该使用哪些功能?

搜索这个话题让我很困惑,因为我发现了太多的信息,对于这个非常简单的问题。它变得更加复杂,因为很多信息都是关于 iOS 的......

那么,也许你们中的一些人可以给我一些关于如何将我的 tableView 保存到文件的提示?

非常感谢!

最好的问候

【问题讨论】:

  • 要保存表格视图还是数据源提供的数据?
  • 我想保存表格视图中显示的所有信息,并能够将其加载到表格视图中。
  • 表格视图是否从数据源获取信息?
  • 是的。我有一个名为 tableViewData 的数组。我还有一个用于绑定的 arrayController。

标签: swift xcode macos cocoa


【解决方案1】:

您不能/不应将TableView(包含您的数据的 UI 元素)保存到文件中。您要做的是序列化输入TableView 的数据,然后将其保存到磁盘,然后在用户重新启动您的应用程序后将其读回以恢复 TableView。

对于如何做到这一点的教程,我强烈推荐这个:

https://medium.com/commencis/swift-4s-codable-one-last-battle-for-serialization-30ceb3ccb051

但是,要使其发挥作用,您首先需要概念化数据的结构方式,以便准确了解需要做什么。通常,TableView 依赖于项目数组,其中有几个需要序列化的属性。序列化应遵循数组的模式,其中包含带有键的项,以标识您要保存的每个属性。

【讨论】:

  • 感谢您的回复和教程!我理解它,这基本上解释了我如何编码和解码我的数据。我有一个名为“tableViewData”的数组。它包含类“Person”(仅包含字符串、int、bool 等基本类型)。所以为了保存我的数据,我需要对这个数组进行编码。知道了。我会试试这个,但你的回复对我很有帮助!非常感谢:)
  • 很高兴为您提供帮助。 :) 但是,如果您认为他们已经回答了您的问题,您应该接受本网站上的答案。这是本网站的良好礼仪。
  • 是的。我知道。我想先尝试一下;)不幸的是,我想我错过了一些东西......整个编码/解码对我来说并不完全清楚。我只是在我的人员类中使用了基本类型(如教程中的结构),但它说“参数类型'Person'不符合预期的类型'Encodable'”。我错过了什么?
  • 如果不显示您正在编写的代码,就不可能知道。请提出另一个问题,其中包含您编写的代码和您遇到的错误。
  • 感谢您的帮助!也许我知道缺少什么。我将首先尝试自己解决问题,如果这不起作用,我会再问一次:) 由于您的回答,我有一个起点。再次感谢:)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-05-29
  • 1970-01-01
  • 2018-07-25
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多