Swift
-
[Swift UI] ObservableObject, @Published : Data의 변화를 감시하고 알려주자Swift/SwiftUI 2022. 4. 5. 23:13
SwiftU가 지켜보고 있다가 ObservableObject의 값이 변하면 View에 알려주고 전달한다 감시할 변수에게 @Published 으로 감싸주면 그 변수에 변화가 감지 될때 마다 변화가 생겼다고 알려준단다. 이런식으로 쓴다 class를 만들고 ObservableObject를 상속 받는다 꼭 필히 import Combine해준다 왜냐하면 ObservableObject은 Combine이라는 framework이 제공한다 class 안에 변수를 담을 껀데 @Published로 감싸면 된다 위에 코드는 예시이고 실제 프로젝트에서는 어떻게 작동될까? Data Struct이다 "landmarkData.json"에서 list를 읽어오고 그걸 landmarks에 담아 준다 그리고 감시한다 그러면 어떻게 쓰일까?..
-
[SwiftUI] isFavorite: Bool 활용하여 filter 해주기Swift/SwiftUI 2022. 4. 5. 21:15
주목할 곳은 15~17번째 줄이다 landmark라는 List를 iterate하면서 각각의 객체 안에 있는 isFavorite이라는 Bool type data의 value를 가지고 오면서 showFavoriteOnly라는 변수의 값을 뒤집어서 논리 연산자로 두 값을 계산하고 있다 var showFavoritesOnly = true var isFavorite = true print(!showFavoritesOnly || landmark.isFavorite) // false || true // true var showFavoritesOnly = true var isFavorite = false print(!showFavoritesOnly || landmark.isFavorite) // false || fal..
-
[SwiftUI] Binding : 다른 View 에서 변수를 가져다 써보자Swift/SwiftUI 2022. 4. 4. 21:27
PlayerView안에 isPlaying이 선언되어 있다 자식 View안에 PlayButton이라는 View의 parameter로 전달된다 PlayButton이라는 struct의 parameter로 isPlaying이 전달되었으며 PlayButton: View에서 @Binding var isPlaying: Bool 로 type을 지정해주고 변수라고 다시 한번 선언해 주어야 한다. 그렇게 되면 PlayerView에서 선언된 isPlaying과 같은 property를 사용 하게 된다. 값을 복사해온 변수가 아닌 같은 참조주소를 가진 같은 property이다
-
[SwiftUI] State : View 안에서 data에 접근해서 읽고 써보자Swift/SwiftUI 2022. 4. 4. 13:56
Apple Developer Documentation developer.apple.com Swift 문법이 아닌 Swift UI가 지원하는 녀석이다 Property를 한번 감싸주는데 그 value를 읽어오거나 쓰게끔 도와준다. "referring to the property directly" 값을 복사해 오는 것이 아닌 참조에 의해 해당 property에 접근을 하며 선언된 해당 View 안에서 사용하게 된다 만약 다른 View 에서 사용 하고 싶다면 @Binding을 쓰면 된다 그건 다음 글에서...
-
-
[Swift] Computed Property 에 대해 알아보자Swift 2022. 4. 1. 00:36
도대체 var perimeter가 뭘까? 처음에는 closure인지 알았다 아니지만 비슷하게 사용할수 있다. 정체는 바로 Computed Property라고 하는 녀석이다. 공식문서의 정의이다 실제로 저장되는 property는 아니고 이미 저장된 값을 가지고 오거나 저장된 변수의 값을 바꿔준다 myTriangle.perimeter로 instance 의 변수명.property로 호출한다 그러면 get의 구문을 타게 되는데 return 3.0 * sideLength 이므로 Stored Property sideLength의 값 2.5를 가지고와 3 * 2.5 = 7.5를 return한다 그리고 값을 넣어 Stored Property의 값을 바꿔줄수도 있다. myTriangle.perimeter = 9.0 이라..