티스토리 뷰

안녕하세요.


이번엔 코코아 어플리케이션 작성하면서 있었던 문제에 대해서 포스팅을 하려고 합니다.


최근에 맥북을 사용하는 지인에게 어떠한 유틸리티가 있었으면 좋겠다. 라는 얘기를 듣고 개인적으로 공부, 취미로 어플리케이션을 만들고 있습니다.


어플리케이션을 작성하다가 내부적으로 설정 파일을 Export하는 기능을 만들다가 문제가 생겼습니다.


파일이 내가 원하는 위치에 저장이 되지 않는 문제입니다.


테스트로 Cocoa App 프로젝트를 하나 새로 만들었습니다.


그리고 간단하게 text를 저장하는 코드를 작성했습니다.


let text: String = "I want save."

if let dir = FileManager.default.urls(for: .documentDirectory, in: .userDomainMask).first {

    let fileURL = dir.appendingPathComponent("write.txt")

    do {

        try text.write(to: fileURL, atomically: false, encoding: .utf8)

    }

    catch {/* error handling here */ print("error")}

}


결과는? 당연히 성공합니다. 저장된 위치를 찍어보았습니다.


file:///Users/injungkim/Library/Containers/com.abf.SandboxTesting/Data/Documents/write.txt


해당 위치를 가보면 'wrtie.txt'가 존재합니다. 그렇다면 이제 소스를 변경해서 내가 원하는 위치에 저장을 시도합니다.


let text: String = "I want save."

let url: URL = URL(string: "file:///Users/injungkim/test.txt")!

do {

    try text.write(to: url, atomically: false, encoding: .utf8)

}

catch {/* error handling here */ print("error")}


결과는?


error


에러가 발생했습니다. 위 소스와 다른점은 경로를 변경한 것 뿐인데 실패가 계속 되었고, 저장하는 방식이 잘못되었다고 생각해서 파일을 저장하는 방식을 오래 찾았습니다.


하지만 결과는 Sandbox 문제였습니다.


do try catch 절에서 에러 내용을 제대로 찍어보지 않았던 것이 문제였습니다.


error Error Domain=NSCocoaErrorDomain Code=513 "You don’t have permission to save the file “test.txt” in the folder “injungkim”." UserInfo={NSFilePath=/Users/injungkim/test.txt, NSUnderlyingError=0x604000042f40 {Error Domain=NSPOSIXErrorDomain Code=1 "Operation not permitted"}}


권한 문제임을 확인하고 Project - Capabilites로 이동해서,


App Sandbox가 On 상태입니다.


App Sandbox를 Off로 변경해줍니다.


그리고 재 실행해봅니다.


최근에 사용하면서 이 문제로 2시간정도 허비를 해서 기록 겸 포스팅 합니다.


어느 분에게는 도움이 되었으면 좋겠네요.


새로 돌아오는 한주도 활기차게 보내세요~

댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
«   2024/05   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31