iOS/Swift

[IOS] UserDefaults 로컬 저장소에 저장 및 불러오기

유훈 | Yuhun 2022. 2. 3. 03:31
반응형

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