987810421296284
Ungkyu Choi
  • 2016.5.7 14:46
  • 조회수 113
  • 답변수 1
987810421296284
Ungkyu Choi
  • 2016.5.7 14:46
  • 조회수 113
  • 답변수 1

아카이브 데이터 저장

질문드립니다

가상머신에서는 방 예약이 저장 되고 처음 실행시에만 데이터를 생성하고

그 후에는 데이터를 읽어오는 방식으로 잘 되는데

실제 아이폰에서 구동하니까 데이터를 계속 생성하고 앱을 종료하면 데이터가 저장되지 않습니다

그 이유에 대해서 알고싶습니다

  • #iOS Swift입문
  • #아카이브3

1 답변

  • Seongkwanyoonprofile eb5yt2
    윤성관(링고스타)
    • 2016.5.10 10:34

    안녕하세요~ 질문 감사드립니다. 덕분에 제 코드의 실수를 찾을 수 있었습니다.

    제가 디버깅 한 방식을 공유해 드리겠습니다.
    먼저 디바이스에서 에러를 재현해 보니 재현이 되더군요.
    저장시에 문제가 있다고 판단해서

    func save(){
    let success = NSKeyedArchiver.archiveRootObject(self.branches, toFile: self.filePath)
    }

    와 같이 archiveRootObject 함수의 실행 결과를 받아오니 false가 떨어지더군요.
    (브레이크 포인트를 생성합니다.)

    두 개의 매개변수 중 self.branch는 정상적으로 6개의 오브젝트가 존재하는 것을 확인할 수 있으니,
    디버깅 창에

    po self.filePath

    를 하니

    "/var/mobile/Containers/Data/Application/F6E6DF38-D21A-4206-A5C8-DEC997C7DDC8/DocumentsBranchData.brch"

    와 같은 결과가 나왔습니다. 파일의 저장 경로가 잘 못 된 거죠.

    그래서

    var filePath:String { get{
    let documentDirectory = NSSearchPathForDirectoriesInDomains(.DocumentDirectory, .UserDomainMask, true).first!
    return documentDirectory + "/" + fileName
    }}

    와 같이 중간에 / 를 추가하는 방식으로 파일 경로를 만들면 해결 됩니다.

답변 쓰기

이 입력폼은 마크다운 문법을 지원합니다. 마크다운 가이드 를 참고하세요.