[SwiftUI] @appstorageLanguage/Swift2022. 9. 8. 21:15
Table of Contents
@appstorage (참고)
: UserDefaults의 값을 반영하고 해당 사용자 기본값의 값 변경에 대한 보기를 무효화하는 Property Wrapper 유형입니다.
appstorage를 알고 싶은 거였는데, 모르는 단어 UserDefaults와 Property Wrapper가 나왔습니다.
간단하게 설명을 하고 넘어가도록 하겠습니다.
UserDefaults (참고)
앱을 실행하는 동안 지속적으로 키-값 쌍을 저장하는 사용자의 기본 데이터베이스에 대한 인터페이스입니다.
UserDefaults는 앱을 종료한 다음 다시 실행해도 그대로 유지되므로 앱 구성 데이터를 저장하는 데 이상적인 방법입니다.
let defaults = UserDefaults.standard
defaults.set(25, forKey: "Age")
defaults.set(true, forKey: "UseTouchID")
defaults.set(CGFloat.pi, forKey: "Pi")
let array = ["Hello", "World"]
defaults.set(array, forKey: "SavedArray")
/* ----------------------------------------- */
let age = defaults.integer(forKey: "Age")
let useTouchID = defaults.bool(forKey: "UseTouchID")
let pi = defaults.double(forKey: "Pi")
let savedArray = defaults.object(forKey: "SavedArray") as? [String] ?? [String]()
- integer(forKey:)키가 있으면 정수를 반환하고 없으면 0을 반환합니다.
- bool(forKey:)키가 있으면 부울을 반환하고 없으면 false를 반환합니다.
- float(forKey:)키가 있으면 float를 반환하고, 없으면 0.0을 반환합니다.
- double(forKey:)키가 있으면 double을 반환하고, 없으면 0.0을 반환합니다.
- object(forKey:)반환 AnyObject?하므로 데이터 유형에 조건부로 유형 변환해야 합니다.
참고
Property Wrapper (참고)
속성 래퍼는 속성이 저장되는 방식을 관리하는 코드와 속성을 정의하는 코드 사이에 분리 계층을 추가합니다.
//@propertyWrapper
//struct TwelveOrLess {
// private var number = 0
// var wrappedValue: Int {
// get { return number }
// set { number = min(newValue, 12) }
// }
// }
@propertyWrapper
struct SmallNumber {
private var maximum: Int
private var number: Int
var wrappedValue: Int {
get { return number }
set { number = min(newValue, maximum) }
}
init() {
maximum = 12
number = 0
}
init(wrappedValue: Int) {
maximum = 12
number = min(wrappedValue, maximum)
}
init(wrappedValue: Int, maximum: Int) {
self.maximum = maximum
number = min(wrappedValue, maximum)
}
}
struct ZeroRectangle {
@SmallNumber var height: Int
@SmallNumber var width: Int
}
var zeroRectangle = ZeroRectangle()
print(zeroRectangle.height, zeroRectangle.width)
// Prints "0 0"
그래서 본론으로 돌아와서, appstorage가 무엇인지 알아보겠습니다.
@AppStorage("KEY") var Name: Type = Value
// UserDefaults.standard.set("Value", forKey: "KEY")
swiftUI 버전의 UserDefaults 라고 생각을 하면 됩니다. 그렇기에 앱을 종료가 되더라도, 값이 저장이 되어 유지를 시킬 수 있게 됩니다.
'Language > Swift' 카테고리의 다른 글
[SwiftUI] @State @binding (0) | 2022.09.12 |
---|---|
[Swift] xcode template file modified, Add Snippet (0) | 2022.09.10 |
[SwiftUI] preview가 뭔데요? (0) | 2022.09.08 |
[Swift] image asset 1x, 2x, 3x (0) | 2022.09.08 |
[Swift] 불투명한 유형을 some으로 반환 그리고 Scene (0) | 2022.09.07 |
@jaewpark :: 코스모스, 봄보다는 늦을지언정 가을에 피어나다
포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!