• 카테고리

    질문 & 답변
  • 세부 분야

    모바일 앱 개발

  • 해결 여부

    미해결

todo 앱에서 파일 저장 기능에 대한 질문입니다.

21.09.06 20:16 작성 조회수 118

0

안녕하세요?
자꾸 귀찮게 질문 드려 죄송합니다만... todo앱에서 또 질문이 있습니다 ㅠㅠ
 
아래 Todo 어레이를 JSON 파일로 저장하는 코드 및 save func 코드에 대한 질문입니다.
 
/// 현재 Todo 배열 상태를 JSON 파일로 저장
    @discardableResult private static func saveToJSONFile() -> Bool {
        do {
            let data: Data = try JSONEncoder().encode(self.all)
            try data.write(to: self.todosPathURL, options: Data.WritingOptions.atomicWrite)
            return true
        } catch {
            print(error.localizedDescription)
        }
        return false
    }
 
 
Todo를 추가/수정하거나 삭제할 때 FileManager의 url path에 todos.jason 파일을 만들고 파일 유무를 확인한 다음에 그 파일에 json으로 인코딩 후 write를 하고,
 
Todo를 추가/수정/삭제할 때마다 매번 임시 파일에 잠깐 썼다가 기존 todos.json을 파일 통째로 다시 덮어 쓰는 것(파일에 이어쓰기가 아닌)으로 이해했는데 맞을까요?
 
혹시 제가 이해한 게 맞다면 실제 상용 앱에서는 Todo 데이터의 수정(Create, Update, Delete)이 발생할 때마다 파일 전체 덮어쓰기 및 그 disk I/O 지연으로 인해 앱 성능이나 기기 수명에 영향이 없을지,
영향이 있다면 그와 같은 이유로 앱 스토어 심사에서 등록이 거부되지는 않을까 궁금합니다.

추후 확장성 고려 시 빈번하게 데이터 추가/수정/삭제가 일어나면 FileManager를 더 공부해서 기존 todos.json 파일을 이어쓰게 하는 게 좋을까요?(iOS에서 지원하는지는 모르겠습니다만)
 
아니면 CoreData 같은 것을 쓰는 게 좋을까요?(배우기 어렵다던데… ㅠ)
 
감사합니다.
 

답변 1

답변을 작성해보세요.

0

이해하신 바가 맞습니다.

이정도 데이터 양으로는 현재의 하드웨어 스펙으로 크게 문제되지 않습니다.
앱스토어 심사지침에도 문제 없구요 :)
정말 많은 데이터를 다루거나 단순 텍스트 외의 데이터를 다뤄야한다면 Core Data를 배워보시거나 SQLite를 배워보시면 도움이 될겁니다.

해보면서 아시겠지만 뭐든간에 배우는건 어려워요 ㅎㅎ Core Data라고, SQLite라고 크게 다르지 않습니다.