【发布时间】:2019-04-26 15:41:03
【问题描述】:
我有一个简单的基于 NSDocument 的应用程序,它有两个文本字段(想象一下 git 不同)。当我打开我的文件时,它会打开两个带有我的文件名的窗口。在第一个窗口上一切正常。第二个的 UI 是空的,文件名相同。
override func makeWindowControllers() {
// Returns the Storyboard that contains your Document window.
let storyboard = NSStoryboard(name: NSStoryboard.Name("Main"), bundle: nil)
let windowController = storyboard.instantiateController(withIdentifier: NSStoryboard.SceneIdentifier("Document Window Controller")) as! NSWindowController
self.addWindowController(windowController)
}
override func read(from data: Data, ofType typeName: String) throws {
if let fileString = String(data: data, encoding: String.Encoding.utf8) {
makeWindowControllers()
guard let vc = windowControllers.first?.contentViewController as? ViewController else {
throw NSError(domain: NSOSStatusErrorDomain, code: unimpErr, userInfo: nil)
}
guard let inputString = String(data: data, encoding: .utf8) else {
throw NSError(domain: NSOSStatusErrorDomain, code: unimpErr, userInfo: nil)
}
let doc = JsonConverter().convertToJSONFrom(string: inputString)
if let a = doc["a"] as? String {
vc.leftTextView.string = a
}
if let b = doc["b"] as? String {
vc.rightTextView.string = b
}
} else {
throw NSError(domain: NSOSStatusErrorDomain, code: unimpErr, userInfo: nil)
}
}
我不知道第二个(右侧)来自哪里。
编辑:我刚刚注意到,如果我双击一个保存的文件,我会收到这个错误,奇怪的是,它不会从 read() 函数中的任何 NSErrors 中触发。
Fwiw,从菜单打开就是我上面所说的。
编辑 2: 更正。 “有时”它会打开两个窗口。但即使这样做,两者都是空的。我不明白的是,这个读取功能是如此简单,没有太多问题。感觉就像引擎盖下的一切都在侧身。
【问题讨论】:
标签: swift macos nsdocument