inflearn logo
강의

Course

Instructor

Yagom's iOS Programming

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

270

PKH

5 asked

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 같은 것을 쓰는 게 좋을까요?(배우기 어렵다던데… ㅠ)
 
감사합니다.
 

todo앱 ios 파일매니저 swift

Answer 1

0

yagom

이해하신 바가 맞습니다.

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

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

강좌소개의 overview

0

370

1

configure 메소드의 DispatchQueue.main

0

342

1

prepareForReuse 사용 방법

0

620

1

화면이 야곰님처럼 로드되지 않아 질문드립니다.

0

375

2

버튼 이미지 크기가 조절이 안 되는데 어떤 부분을 조정해야 할까요?

0

2178

1

코드블록 10-3-5 에러

1

207

0

info에서 자동완성이 나오지 않는데 따로 설정을 해주어야 하는 부분인가요?

0

264

1

star buton

0

362

1

Singleton 관련 질문.

0

251

1

로컬 유저 노티피케이션에서 반복 주기 설정 방법 문의 드립니다.

0

532

0

Todo 앱에서 로컬 노티피케이션 해제 시 질문 드립니다.

0

352

1

ios13이 생기고 변경점 관련

0

204

1

8번 프로젝트

0

189

1

todo앱 User Notification에서 질문이 있습니다

0

437

1

9번 프로젝트 질문

1

278

2

9번 프로젝트 자료 질문

0

260

1

8번 프로젝트 > 도전과제 2번 질문

0

214

2

Todo 앱에서 일정 추가가 바로 반영되지 않습니다.

1

435

6

Todo 앱에서 DateFormatter 사용 관련 질문 드립니다.

0

289

1

5번 프로젝트 - 나머지 화면 구성하기

1

192

1

웹브라우저 - 코드로 기능 구현하기

1

569

3

어시스던트에 매뉴얼이 없습니다.

0

254

1

제공된 코드블럭 파일

0

250

2

5번째 프로젝트 질문입니다

0

131

0