2017-02-13 17 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