我想要做的是将一些来自 MacOS 应用程序的数据与 NSDocument 提供的类存储在一个文件中。我决定使用 SwiftUI ,但我发现的所有教程都使用 Storyboards。从那些我无法适应如何将我的文本字段中的数据获取到我的 NSDocument 类中。据我所知,我需要像这样在 NSDocument 类中初始化我的变量
class Document: NSDocument {
@objc dynamic var contents = "Foo"
public init(contentString: String) {
self.contents = contentString
}
/* ... */
}
在同一个类中,我可以使用保存这个字符串
override func data(ofType typeName: String) throws -> Data {
return contents.data(using: .utf8) ?? Data()
throw NSError(domain: NSOSStatusErrorDomain, code: unimpErr, userInfo: nil)
}
所以在我使用 SwiftUI 生成的视图中,我可以使用
struct MainTableView: View {
@State var doc = Document.init()
var body: some View {
TextField("My text", text: self.$doc.contents)
}
}
但是 - 因为我只使用一个实例,所以它总是保存“Foo” - 无论我在我的 TextField 中输入什么。
此外 - 另一个问题将立即跟进:从长远来看,我不想只存储一个字符串。我将拥有 3 个具有不同数据结构的不同二维数组。NSDocument 是否能够自行处理,还是我需要将它们转换为 JSON/XML/...-String 并将其存储为文件?