gpt4 book ai didi

swift - 如何向基于文档的 Swift 3 应用程序添加简单的保存加载功能?

转载 作者:行者123 更新时间:2023-11-28 06:24:59 25 4
gpt4 key购买 nike

我目前正在研究 Swift(出于业余爱好),并试图弄清楚我应该如何在基于文档的 swift 应用程序中将函数保存和加载到 document.swift 文件?我想知道如何保存和加载简单的 txt 文件。我正在使用 NSTextView,所以我想我必须将其更改为 NSString?

目前有这些功能:

override func data(ofType typeName: String) throws -> Data {
// Insert code here to write your document to data of the specified type. If outError != nil, ensure that you create and set an appropriate error when returning nil.
// You can also choose to override fileWrapperOfType:error:, writeToURL:ofType:error:, or writeToURL:ofType:forSaveOperation:originalContentsURL:error: instead.
throw NSError(domain: NSOSStatusErrorDomain, code: unimpErr, userInfo: nil)
}

override func read(from data: Data, ofType typeName: String) throws {
// Insert code here to read your document from the given data of the specified type. If outError != nil, ensure that you create and set an appropriate error when returning false.
// You can also choose to override readFromFileWrapper:ofType:error: or readFromURL:ofType:error: instead.
// If you override either of these, you should also override -isEntireFileLoaded to return false if the contents are lazily loaded.
throw NSError(domain: NSOSStatusErrorDomain, code: unimpErr, userInfo: nil)

}

最佳答案

在您的 document.swift 文件中,下面这些函数将加载并设置您的 TextView 字符串值。

希望这对您有所帮助!

var content = ""
override func makeWindowControllers() {
//Make the window controller
let storyboard = NSStoryboard(name: "Main", bundle: nil)
let windowController = storyboard.instantiateController(withIdentifier: "Document Window Controller") as! NSWindowController
self.addWindowController(windowController)

//Access the view controller
let vc = windowController.contentViewController as! ViewController
//Set the text view string to the variable that was loaded
vc.textView.string = content
}

override func data(ofType typeName: String) throws -> Data {
//Access the current view controller
if let vc = self.windowControllers[0].contentViewController as? ViewController {
//Get the textView's String Value; or call a function that will create a string of what needs to be saved
return vc.textView.string?.data(using: String.Encoding.utf8) ?? Data()
}else {
throw NSError(domain: NSOSStatusErrorDomain, code: unimpErr, userInfo: nil)
}
}

override func read(from url: URL, ofType typeName: String) throws {
do {
//Set a string variable to the loaded string
//We can't directly set the text views string value because this function is called before the makeWindowControllers() so now text view is created yet.
content = try String(contentsOf: url, encoding: String.Encoding.utf8)
}catch {
throw NSError(domain: NSOSStatusErrorDomain, code: unimpErr, userInfo: nil)
}
}

关于swift - 如何向基于文档的 Swift 3 应用程序添加简单的保存加载功能?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42200177/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com