인프런 커뮤니티 질문&답변

PKH님의 프로필 이미지
PKH

작성한 질문수

야곰의 iOS 프로그래밍

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

작성

·

181

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

yagom님의 프로필 이미지
yagom
지식공유자

이해하신 바가 맞습니다.

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

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

PKH님의 프로필 이미지
PKH

작성한 질문수

질문하기