iOS/Swift 어플 따라하기

[Swift] NScoder로 data Encode

Chafle 2022. 10. 6. 21:40
반응형

1. Documents 폴어에 대한 파일 경로를 생성

 

filemanager - 파일 시스템에 대한 인터페이스를 제공하는 객체

 

 

 let dataFilePath = FileManager.default.urls(for: FileManager.SearchPathDirectory, in: FileManager.SearchPathDomainMask

 

디렉토리 및 도메인 마스크로 구성된, url이 Array로 구성 돼있다.

.documentdirectory와 / .userDomainMask로 채워주고

 

무엇이 있나 항목을 테스트 해보자

 

 

let dataFilePath = FileManager.default.urls(for: .documentDirectory, in: .userDomainMask).first
        
        print(dataFilePath)

 

디버그 창에 아래와 같은 경로가 뜨고 경로에 결국 가보면

 

plist파일이 있음을 확인

UserDefaults와 다른점은 Array형태라는 것

 

 

2. encodedata / dataFilPath에 데이터를 쓰는 것

 

func saveItems() {
        let encoder = PropertyListEncoder()
        do {
         //itemArray를 property list에 추가
            let data = try encoder.encode(itemArray) 
         // dataFilPath에 data쓰기.
            try data.write(to: dataFilePath!)
        } catch {
            print("Error encoding item array, \(error)")
        }
        tableView.reloadData()
    
    }

 

 

 

 

4. MVC로 작성 했다면

모델 객체 유형에 Encodable 달아주고 plist 혹은 JSON으로 인코딩 할 수 있는 준비

클래스가 인코딩 가능하려면 모든 프로퍼티가 standard data type으로 있어야 한다.

 

class Item: Encodable {
    var title: String = ""
    var done: Bool = false
}
반응형