티스토리 뷰
@AppStorage("isLoggedIn") var isLoggedIn : Bool = UserDefaults.standard.bool(forKey: "isLoggedIn")
이런식으로 PropertyWrapper을 달아서 쓸 수 있다!
만약 Unsupported Type이라면 이런 extension을 달아서 해결할 수 있다.
extension Array: RawRepresentable where Element: Codable {
public init?(rawValue: String) {
guard let data = rawValue.data(using: .utf8),
let result = try? JSONDecoder().decode([Element].self, from: data)
else {
return nil
}
self = result
}
public var rawValue: String {
guard let data = try? JSONEncoder().encode(self),
let result = String(data: data, encoding: .utf8)
else {
return "[]"
}
return result
}
}
struct ContentView: View {
@AppStorage("itemsInt") var itemsInt = [1, 2, 3]
@AppStorage("itemsBool") var itemsBool = [true, false, true]
var body: some View {
VStack {
Text("itemsInt: \(String(describing: itemsInt))")
Text("itemsBool: \(String(describing: itemsBool))")
Button("Add item") {
itemsInt.append(Int.random(in: 1...10))
itemsBool.append(Int.random(in: 1...10).isMultiple(of: 2))
}
}
}
}
'macOS, iOS' 카테고리의 다른 글
[iOS] 카카오 공유하기 (0) | 2021.05.06 |
---|---|
[iOS] 클립보드에 복사하기 (0) | 2021.05.06 |
[iOS] Codable URL이 "" 일 때 dataCorrupted 안나게 하기 (0) | 2021.04.28 |
[Swift] Firebase DynamicLink 활용해서 Deeplink 처리하기 (0) | 2021.04.26 |
[Swift] 함수 이름 프린트 하는법 (0) | 2021.04.24 |