2017-02-13 1 views
0

私は今、Swift(ちょっとした趣味)を勉強していて、ドキュメントベースの迅速なアプリケーションでdocument.swiftファイルに関数を読み込んで保存する方法を理解しようとしていますか?単純なtxtファイルを保存して読み込む方法を知りたい。私はNSTextViewを使用しているので、NSStringに変更する必要があると思いますか?ここで 文書ベースのSwift 3アプリに簡単なセーブロード機能を追加するにはどうすればいいですか?

は、現時点では、これらの機能は:

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) 

    } 

答えて

0

あなたがロードし、テキストビューの文字列値を設定します以下、これらの機能を提出document.swiftで。

希望すると便利です。

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) 
    } 
} 
+0

ありがとうございます!私はそれに入り、問題があるかどうかを報告します。 – paha

関連する問題