2014-12-11 4 views
0

사용자가 텍스트 파일을 선택하고 파일의 내용을 NSTextView에 표시 할 수있는 파일 브라우저를 통합하려고합니다. 파일 브라우저가 작동하고 텍스트 상자가 작동하지만 파일을 열고 적어도 하나 또는 선호하는 일련의 문자열 (한 줄에 하나씩)을 생성 할 수 없습니다.텍스트 파일 열기 어려움

let FileWindow : NSOpenPanel = NSOpenPanel() 
    FileWindow.prompt = "Open File" 
    FileWindow.title = "Select a File" 
    FileWindow.allowedFileTypes = ["txt"] 
    FileWindow.canChooseDirectories = false 
    FileWindow.allowsMultipleSelection = false 
    FileWindow.runModal() 
    var selectedfile = FileWindow.URL 
    var output = selectedfile?.absoluteString 
    var index: String.Index = advance(output!.startIndex, 7) 
    FileLabel.stringValue = output!.substringFromIndex(index) 

if (selectedfile != nil) { 
var data: NSData = NSFileManager.defaultManager().contentsAtPath(output!.substringFromIndex(index))! 
     var txt: NSString = NSString(data: data, encoding: NSUTF8StringEncoding)! 
     self.FileDisplayView.textStorage?.mutableString.appendString(txt) 
     self.FileDisplayView.needsDisplay = true 
    } 

아무 도움이됩니다.

답변

0

업데이트 : 엑스 코드 7.1 • 스위프트 2.1

당신은

텍스트 파일을 열어 처리하기 위해이 클래스를 생성 문자열 (contentsOfFile :) 또는 문자열 (contentsOfURL :)를 사용해야합니다

public class File { 

    class func open(path: String, encoding: NSStringEncoding = NSUTF8StringEncoding) -> String? { 
     guard NSFileManager().fileExistsAtPath(path) else { return nil } 
     do { 
      return try String(contentsOfFile: path, encoding: encoding) 
     } catch let error as NSError { 
      print(error.localizedDescription) 
      return nil 
     } 
    } 
    class func save(path: String, fileContent: String, encoding: NSStringEncoding = NSUTF8StringEncoding) -> Bool { 
     do { 
      try fileContent.writeToFile(path, atomically: true, encoding: encoding) 
      return true 
     } catch let error as NSError { 
      print(error.localizedDescription) 
      return false 
     } 
    } 
} 

class Url { 
    class func read(urL: NSURL, encoding: NSStringEncoding = NSUTF8StringEncoding) -> String? { 
     do { 
      return try String(contentsOfURL: urL, encoding: encoding) 
     } catch let error as NSError { 
      print(error.localizedDescription) 
      return nil 
     } 
    } 
    class func write(urL: NSURL, fileContent: String, encoding: NSStringEncoding = NSUTF8StringEncoding) -> Bool { 
     do { 
      try fileContent.writeToURL(urL, atomically: true, encoding: encoding) 
      return true 
     } catch let error as NSError { 
      print(error.localizedDescription) 
      return false 
     } 
    } 

} 

사용법은 다음과 같습니다.

if let loadedString = File.open("\(NSHomeDirectory())/Desktop/file.txt") { 
    println(loadedString) 
} else { 
    println("error reading file") 
} 

또는 URL을 열려면 :

if let loadedString = Url.read(yourUrl) { 
    println(loadedString) 
} else { 
    println("error reading file") 
} 
+0

NSString은 사용하지 않아야합니다. 대신 String을 사용하십시오. –

+0

모든 정보를 제공해 주셔서 감사합니다. 나는 지금 막 파일을 읽을 필요가있어서 방금 구현했지만 이제는 훌륭하게 작동합니다. 정말 고마워! – user3185748

+0

당신은 환영합니다 –