JacquesNorris
JacquesNorris

Reputation: 143

How to get data from SwiftUI TextField to NSDokument class

What I'm trying to do is store some data from a MacOS App with NSDocument provided class in a file. I decided to use SwiftUI , but all tutorials I found are using Storyboards. And from those I cannot adapt how to get the data from my textfield into my NSDocument class. As far as I got it I need to init my variables in the NSDocument class like this

class Document: NSDocument {

@objc dynamic var contents = "Foo"

public init(contentString: String) {
    self.contents = contentString
    }
/* ... */
}

and in the same class I can save this string using

override func data(ofType typeName: String) throws -> Data {
    return contents.data(using: .utf8) ?? Data()
    
    throw NSError(domain: NSOSStatusErrorDomain, code: unimpErr, userInfo: nil)
}

So in my view generated with SwiftUI I can access this using

struct MainTableView: View {

@State var doc = Document.init()

var body: some View {
    TextField("My text", text: self.$doc.contents)
    }
}

But - as I'm using only an instance it always saves "Foo" - no matter what I type into my TextField.

Besides - another question that will follow up right away: On the long run I don't want to store a string only. I'll have 3 different 2D-Arrays with different data-structures. Is NSDocument able to handle this by itself or do I need to convert those to JSON/XML/...-String and store this as a file?

Upvotes: 0

Views: 113

Answers (0)

Related Questions