티스토리 뷰

▪︎ UserDefaults? 

UserDefaults 클래스는 기본 시스템과 상호작용 할 수 있도록 인터페이스를 제공해준다. 이를 통해 사용자 기본 데이터 베이스(plist)에 key - value쌍 형태의 데이터를 저장해 사용한다. 

 

Float, Double, Integer, Boolean, URL과 같은 일반적인 유형뿐만 아니라 NSData, NSString, NSNumber, NSDate, NSArray와 같은 유형의 객체도 저장돼며, 단일 기기에 로컬로 저장되 앱이 삭제되지 않는 한 데이터가 유지된다.

 

UserDefaults는 단일 데이터 값에 적합하기 때문에 앱의 미디어 재생 속도, 알람 On / Off 여부, 사용자가 선호하는 측정 단위 등 앱의 기본 설정을 저장하는데 주로 사용된다. 

 

 

Apple Developer Documentation

 

developer.apple.com

 

다음으로 UserDefaults 사용해 데이터를 관리해보자.

 

▪︎  UserDefaults 사용

1. 데이터 저장

UserDefaults의 set 메소드를 이용해 데이터를 저장한다. 위에서 key - value 쌍이라고 언급했듯이 value 값과 그 값에 해당하는 key 값을 설정 해줘야한다.

 

UserDefaults.standard.set("Ekko", forKey: "myString")
UserDefaults.standard.set(10, forKey: "myInteger")
UserDefaults.standard.set(true, forKey: "myBoolean")

 

저장한 데이터는 

print(NSSearchPathForDirectoriesInDomains(.documentDirectory, .userDomainMask, true).last! as String)

마지막 Documents를 Library로 바꿔 파인더에서 폴더 이동 후 Library - Preferences 안의 plist에서 확인할 수 있다.

 

 

2. 데이터 수정

기존에 존재하는 key값의 value를 수정하고 싶은 경우에도 set을 사용하면 된다.

UserDefaults.standard.set(false, forKey: "myBoolean")

 

3. 데이터 가져오기

set으로 데이터를 저장했다면, 데이터를 가져와보자.

UserDefaults.standard.string(forKey: "myString") 	// "Ekko"
UserDefaults.standard.integer(forKey: "myInteger")	// 10
UserDefaults.standard.bool(forKey: "myBoolean")		// false

이런식으로 key에 해당하는 값을 리턴받을수 있다.

 

각 메소드의 리턴 타입을 보면 object, array, string과 같은 데이터 타입은 Optional 타입이 반환된다. Optional Binding을 적절히 활용하자.

 

만약 key에 해당하는 value가 없는 경우에는 리턴값이 Optional이 아닌 메서드는 각각의 기본값을 리턴한다.

Bool -> false

Integer -> 0

String -> nil

Array -> nil

 

 

4. 데이터 삭제

UserDefaults.standard.removeObject(forKey: "myString")
UserDefaults.standard.removeObject(forKey: "myInteger")
UserDefaults.standard.removeObject(forKey: "myBoolean")

 

 

'iOS' 카테고리의 다른 글

iOS) Realm 사용하기  (0) 2022.08.30
iOS) CoreData 사용하기 (CRUD 구현)  (0) 2022.08.28
iOS) CocoaPods - pod install error 해결방법  (0) 2022.08.23
iOS) CocoaPods 사용하기  (0) 2022.08.23
iOS) UITabBarController Programmatically  (0) 2022.08.09
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/07   »
1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30 31
글 보관함