목록SwiftUI - 기초 (55)
기어가더라도 제대로

2022.11.23 - [SwiftUI - 기초] - [SwiftUI-기초] UserDefaults 와 SwiftUI 이 글은 위의 포스팅의 후속편입니다. 위의 글은 User 타입이 구조체였지만 이번 포스팅에서 다룰 내용은 User가 클래스고 @Published 속성의 프로퍼티를 가지고 있을 때 대처하는 방법입니다. Struct + Codable struct User: Codable { } 구조체의 타입을 Encodig, Decoding하는 방법은 별다를게 없고, Codable만 설정해주면 됩니다. 자동적으로 Encoding, Decoding 로직이 돈다는 것이죠. 요약하자면 Struct 타입을 디스크에 저장하는 방법은 Codable 을 이용한다는 것입니다. Class + Codable + @Publis..

상황 1. 관찰되는 Data 클래스가 필요함 2. 그 데이터 클래스에는 [User] 타입을 들고 있는 @Published 프로퍼티가 필요함. 3. 이 Data에 init이 되고(Decoding), 값이 쓰여질 때마다 UserDefault 로 Encoding 하는 예제 코드 작성 참고. User 는 구조체 struct User: Codable, Identifiable, Equatable { var id = UUID() var name: String } class Data: ObservableObject { @Published var users: [User] = [] { didSet { if let encoded = try? JSONEncoder().encode(users) { UserDefaults.sta..

2022.11.21 - [SwiftUI - 기초] - [SwiftUI-기초] Shape 를 애니메이션 주기 - animatableData 위의 글에선 프로퍼티 하나의 변화를 감지해서 애니메이션을 그렸다면 이번 포스팅에선 두개 ~ 여러개의 애니메이션을 추적해보겠음 보드판의 행과 열이 추가되면 애니메이션이 어떻게 변화하는지를 감지할 것임 행과 열이라는 단어에서 프로퍼티 2개를 추적한다는 것을 알 수 있음 struct Checkerboard: Shape { var rows: Int var columns: Int func path(in rect: CGRect) -> Path { var path = Path() let rowSize = rect.height / Double(rows) let columnSize =..