개발하는 동글 :]

[TIL],[UIKit],[UserDefaults사용] 본문

카테고리 없음

[TIL],[UIKit],[UserDefaults사용]

동글하다 2023. 8. 3. 21:59

Why?

  1. memo앱을 종료한 후 재실행 하였을 때 데이터가 없어지는 문제가 있음

TIL

UserDefaults 를 사용하기로 함

1. 저장할 데이터의 모델에 Codable 프로토콜을 채택한다.

class FolderSection:Codable{
    var folderDatas:[FolderData]
}

class FolderData:Codable{
    var memoSections:[MemoSection]
}

class MemoSection:Codable{
    var memoDatas:[MemoData]
}

class MemoData:Codable{
    
    var content:String
    var date:String
    var info:String
    
    init(content: String, date: String, info: String) {
        self.content = content
        self.date = date
        self.info = info
    }
    
}

 

2. encoder와 decoder 프로퍼티를 선언한다.

    let encoder = JSONEncoder()
    
    let decoder = JSONDecoder()

 

3.  dataManager클래스에 setData와 loadData 메서드를 만들어 준다.

    func setData(){
        if let encoded = try? encoder.encode(data){
            UserDefaults.standard.set(encoded, forKey: "Memo")
         }
    }
    
    func loadData(){
        if let data = UserDefaults.standard.object(forKey: "Memo") as? Data,
           let manager = try? decoder.decode([FolderSection].self, from: data) {
            self.data = manager
        }
    }

4. viewDidLoad내에 dataManager의 loadData 메서드를 호출해 준다.

var dataManager = DataManager()

    override func viewDidLoad() {
        super.viewDidLoad()
        dataManager.loadData()
    }

dataManager를 이용하여 마구마구 사용한다~!