반응형
UserDefaults는 Key와 Value로 이루어져 있습니다. (리액트에서 리덕스와 비슷한 느낌으로 사용 가능할듯 싶습니다.)
아니면 웹 브라우저의 LocalStorage와 비슷한 느낌이기도 하네요.
저장할 데이터 만들고 받아오기
-> 저장할 데이터는 내 마음대로 할 수 없음으로 encoding 해주거나 원하는 데이터 형식으로 바꿔주는작업이 필요합니다. (iOS는 왜 데이터를 그냥 쓰게 못 두는거야ㅜㅜ 장점이자 단점이네요)
암튼.. encoding을 다뤄보고 저장에서는 decoding을 해 보도록 하겠습니다.
(do-catch 문 생략)
저장 - propertyListEncoder() 이용
// 저장할 데이터의 struct가 다음과 같은 예시라고 가정
struct exampleStruct: codable {
var a: String
var b: Int
}
// 데이터 예제
var exData = exampleStruct(a:"데이터",b:1234)
// 이제 Data 객체로 encoding
let saveData = try? PropertyListEncoder().encode(exData)
// 할당하지 않아도 되지만 가독성을 위해 할당
let dataStorage = UserDefaults.standard
// 저장
userDefaults.set(saveData, forKey: "키값")
이렇게 swift 내에서 구조화한 데이터를 userDefault에 저장할 수 있습니다.
이제 데이터를 불러올 텐데 데이터를 불러올 때에도 어떤 데이터인지 알 수 없음으로 decoding해 주도록 하겠습니다.
불러오기 - propertyListDecoder() 이용
guard let data = UserDefaults.standard.object(forKey: "키값") as? Data else {return }
guard let decodeData = try? PropertyListDecoder().decode(exampleStruct.self, from: data ) else {return}
인코딩과 반대로 디코딩을 해 보았는데요. 조금 더 축약해서 작성된 코드입니다.
이렇게 앱을 다시 실행할때 기본적으로 저장해 두었다가 설정을 해줄수 있는 데이터를 보관하는 userDefualt의 사용법을 알아 보았습니다.
반응형
'iOS > Swift' 카테고리의 다른 글
[IOS] UICollectionView 기본 사용 (0) | 2022.02.07 |
---|---|
[IOS] 이벤트 관찰 NotificationCener (0) | 2022.02.07 |
[Swift] error 종류 만들기와 catch (0) | 2022.01.31 |
[Swift]난수 생성과 범위 설정 (0) | 2022.01.30 |
Xcode 단축키 (0) | 2022.01.30 |