일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- Creating Operators
- dismiss
- NullObject
- SWIFT
- swift6
- nestjs
- Operators
- graphql
- typeorm
- URL(string:)
- init?
- SwiftUI
- RFC1738/1808
- @Binding
- nonisolated
- subject
- Xcode
- @EnvironmentObject
- init
- ios14
- RxSwift
- IOS
- Operater
- NavigationLink
- RxCocoa
- @Environment
- operator
- Bug
- @State
- vim
- Today
- Total
목록전체 글 (147)
Tunko Development Diary
Apple Developer Documentation @Environment 와 @EnvironmentObject 차이점 SwiftUI 는 @Environment와 @EnvironmentObject 속성래퍼를 모두 제공합니다. @EnvironmentObject는 환경에 임의 값을 주입할 수 있는 반면 @Environment는 특히 Swift와 함께 작업하기 위해서 존재합니다. Swift에서 사용하기 위해 미리 지정된 Key @Environment 를 통해서 알 수 있는 정보는 디바이스가 다크모드인지 라이트모드인지 뷰가 렌더링되는 크기 클래스 등 시스템에서 제공하는 고정되어있는 속성에 접근이 가능합니다. @Environment 핵심 데이터 관리 개체 컨텍스트와 같은 내용을 읽어내는 데 적합합니다. 반면에 ..
최대한 짧고 간결하게 요약하면 @State로 선언된 변수에 연결하기 위한 프로퍼티 래퍼가 @Binding 입니다. 하지만 밑도 끝도 없이 이렇게만 이야기하면 이해하기 쉽지 않습니다. SwiftUI 에서의 데이터 흐름을 알게 되시면 쉽게 이해할 수 있습니다. 핵심 키워드는 단일원천자료 (Single Source of Truth) 입니다. swiftUI를 이해하는데 있어 가장 중요한 키워드 같습니다. 동일한 데이터 요소가 여러곳에 나뉘어 중복되지 않고 한곳에서 다루어 지는 것입니다. SwiftUI에서는 각 뷰에 데이터가 들어가게 됩니다. 예를 들어보겠습니다. age라는 변수를 선언하고 나이를 저장합니다. 앱을 구성하면서 여러 뷰를 사용하게 되고 각각 age 정보가 필요한 A, B, C뷰를 생성합니다. ABC..
SwiftUI의 View는 구조체로 구현되어있습니다. value Type인 View 내부에선 var로 선언되더라도 프로퍼티 값을 바꿀 수 없습니다. 구조체는 값 유형이기 때문에 일반적으로 허용되지 않습니다. 에러 메시지 Left side of mutating operator isn't mutable: 'self' is immutable 하지만, SwiftUI에서는 @State 속성래퍼를 사용하여 구조체 내부의 값을 수정할 수 있도록 합니다. @State var age : Int = 0 이렇게만 선언하면 age 값을 SwiftUI가 관리하는 공유 스토리지로 이동됩니다. 공유 스토리지로 이동된 age 값은 SwiftUI가 저장하고 가지고있게 됩니다. SwiftUI에서는 데이터를 기반으로 뷰를 매번 다시 그리..
Property Wrappers는 Swift5 에서 사용할 수 있는 기능중 하나입니다. 코드를 줄이고 보기 좋게 만드는데 매우 유용합니다. propertyWrapper란? Swift 문서에 따르면 속성 래퍼는 속성이 저장되는 방식을 관리하는 코드와 속성을 정의하는 코드 사이에 분리 계층을 추가 합니다. 이렇게만 쓰여있으면 사실 이해하기 힘듭니다. 그래서 UserDefaults 를 예시로 들어보겠습니다. extension UserDefaults { public enum Keys { static let email = "email" } var email: String { set { set(newValue, forKey: Keys.email) } get { return String(Keys.email) } } ..
@AppStorage 앱내에 데이터를 쓰고 읽기가 가능합니다. UserDefaults 와 같은 기능을 합니다. @Binding 다른 View가 소유한 값 유형 데이터를 나타냅니다. 바인딩을 로컬로 변경하면 원격 데이터도 변경됩니다. 이것은 데이터를 소유하지 않습니다. @Environment 색 구성표, 접근성 옵션 및 특성 컬렉션과 같은 시스템의 데이터를 읽을 수 있지만 원하는 경우 여기에 고유한 키를 추가할 수 있습니다. 이것은 데이터를 소유하지 않습니다. @EnvironmentObject 환경에 배치한 공유 객체를 읽습니다. 이것은 데이터를 소유하지 않습니다. @FetchRequest 특정 엔티티에 대한 핵심 데이터 가져오기 요청을 시작합니다. 이것은 데이터를 소유합니다. @FocusedBinding..