2017-04-06 2 views
2

저는 Xcode와 Swift를 처음 접했습니다. 내 문서 디렉토리에 "file.txt"라는 파일을 만들고 "파일을 저장할 수있는 권한이 없습니다"라는 오류 메시지가 나타납니다.Xcode Swift 3.0 macOS (Sierra) 앱이 파일을 만들 수없고 권한이 없습니다.

필자는 FIFinderSyncController를 사용하여 모든 것을 볼 때 ("/") 궁극적으로 기본 문서 디렉토리를 사용하고 싶지 않습니다.

let targetFile = (FIFinderSyncController.default().targetedURL()?.path)! + "/file.txt" 

    NSLog("%@", targetFile as NSString) 

    let fileManager = FileManager.default 
    if fileManager.fileExists(atPath: (targetFile)) == false { 

     do { 
      let targetString = (FIFinderSyncController.default().targetedURL()?.path)! + "/Untitled.txt" 

      NSLog("%@", targetString as NSString) 

      let fileManager = FileManager.default 

      if fileManager.fileExists(atPath: targetString) == false { 
       let content = "" // Just creating empty file. 

       //writing 
       try content.write(toFile: targetString, atomically: false, encoding: String.Encoding.utf8) 

       //reading 
       let readingText = try NSString(contentsOfFile: targetString, encoding: String.Encoding.utf8.rawValue) 

       NSLog("%@", readingText as NSString) 
      } 
     } 
     catch { 
      print(error.localizedDescription) 
     } 
    } 

로그 보여줍니다

2017-04-06 13:35:46.450077-0700 Open New Text File[5177:1035580]  /Users/david/Documents/file.txt 
2017-04-06 13:35:46.450257-0700 Open New Text File[5177:1035580]  /Users/david/Documents/file.txt 
You don’t have permission to save the file “file.txt” in the folder “Documents”. 

답변

2

나는 여기에 대한 답을 찾을 그래서 내가 도와 줄 거라 생각 했어요. 문제는 샌드 박스의 한계입니다. 추가 할 경우

com.apple.security.temporary-exception.files.home-relative-path.read-write 

대상의 인 타이틀먼트 파일에는보고 자하는 부모 폴더의 문자열이있는 배열로 있습니다. 제 경우에는 방금 "/"을 추가하여 모든 것을 보았습니다. 여기 내 것이 있습니다 :

<key>com.apple.security.temporary-exception.files.home-relative-path.read-write</key> 
<array> 
    <string>/</string> 
</array> 

이렇게하면 언급 된 폴더와 관련된 모든 항목에 액세스 할 수 있습니다.

경고 : 다른 FIFASyncController가 (다른 앱에서) 설정되어 있으면 서로 영향을 줄 수 있습니다 (철저히 테스트하지 않은 것 같습니다).