Publishers and Subscribers (Combine)
·
SwiftUI
publisher는 데이터를 publish하고 subscriber를 구현하여 값의 변화를 감지합니다  Combine 이란?Combine 프레임워크는 시간에 따른 값의 변화를 처리하기 위한 선언적 Swift API 를 제공합니다.여기서 말하는 값은 여러 비동기 이벤트를 의미할 수 있습니다. Combine 은 publishers 를 만들어 값의 변화를 subscriber 들에게 노출시킵니다subscriber 들은 publisher 로부터 값을 받습니다Combine의 원리publisher는 말 그대로 publish(출판,계시)하다는 의미며 publisher가 publish 한 이벤트, 값을 subscribe(구독)하여 값의 변화를 인지하고 대응할 수 있게 합니다. 이 publish 와 subscriber 가 ..
Combine을 이용하여 값 변화에 대응하는 뷰 만들기
·
SwiftUI
이번 프로젝트의 결과물 ViewModel먼저 @Published 를 사용하여 publisher를 만듭니다. publisher에서 발생하는 이벤트 즉 값의 변화를 .sink subscriber를 사용하여 값의 변화에 대응하도록 만든 Observable ViewModel 입니다. class SubscriberViewModel: ObservableObject { @Published var count: Int = 0 var cancellables = Set() @Published var textFieldText: String = "" @Published var textIsValid: Bool = false @Published var showButton: Bool = fa..
Starting Vapor (Swift로 서버 만들기)
·
SwiftUI
Vapor 란 Swift를 사용하여 백엔드, 웹 앱 API 및 HTTP 서버를 작성할 수 있는 웹 프레임워크입니다 Vapor 설치하기Swift 설치가 되어 있으면, Vapor Toolbox를 설치합니다. 이 CLI(command line interface) 도구는 Vapor를 사용하는 데 필요하지는 않지만, 새 프로젝트를 생성하는 등 유틸리티를 포함하고 있습니다. Toolbox는 Homebrew를 통해 배포됩니다. Homebrew를 아직 설치하지 않았다면 brew.sh에서 설치합니다.brew install vapor Vapor 프로젝트 생성하기첫 번째 단계는 프로젝트를 만들 경로로 들어가 Vapor 프로젝트를 생성합니다.vapor new hello -n 명령어가 완료되면 새로 생성된 폴더로 이동합니다cd..
타이머를 이용하여 아두이노 LED 켜기
·
SwiftUI
아래 프로젝트는 Timer.publish를 이용한 타이머를 구현하여 시간이 끝나게 되면 아두이노 LED를 CoreBluetooth를 이용하여 키는 것 입니다. 아래는 CoreBluetooth 코드입니다.import CoreBluetoothimport SwiftUI@Observable class Bluetooth: NSObject, CBCentralManagerDelegate, CBPeripheralDelegate { var peripherals: Set = Set() var values: String = .init() var connected = false weak var writeCharacteristic: CBCharacteristic? // 데이터를 주변기..
Timer 타이머
·
SwiftUI
특정 시간이 경과한 후에 실행되는 타이머는 대상 객체에 지정된 메시지를 보냅니다 타이머는 실행 루프와 함께 작동합니다. 실행 루프는 타이머에 대한 강력한 참조를 유지하므로, 따로 실행 루프에 추가한 후 타이머에 대한 강력한 참조를 유지할 필요가 없습니다. 타이머를 효율적으로 사용하기 위해서는 실행 루프가 어떻게 동작하는지를 알고 있어야 합니다. 스레딩 프로그래밍 가이드 타이머는 실시간 메커니즘이 아닙니다. 타이머의 발사 시간이 긴 실행 루프 콜아웃 중에 발생하거나 실행 루프가 타이머를 모니터링하지 않는 모드에 있는 동안 발생하는 경우, 타이머는 다음에 실행 루프가 타이머를 확인할 때까지 실행되지 않습니다. 그에 따라서 타이머가 작동하게 되는 시간은 실제 시간과 일치하지 않을 수 있습니다. 더 알고 싶으면..
JSON Data
·
SwiftUI
JSON 데이터는 JavaScript Object Notation으로 key:value 쌍 형식으로 이루어진 데이터입니다  JSON 데이터 만드는 방법다음은 JSON 데이터를 만드는 방법입니다. JSONSerialization을 사용하면 구현한 JSON 형식 데이터를 JSON 데이터로 바꿀 수 있습니다. 추가 설명으로 try?로 설정하면 do catch를 사용하지 않아도 됩니다. 하지만 반환되는 데이터가 optional이 되는 것을 명심합시다.func getJSONData() -> Data? { let dictionary: [String:Any] = [ "id" : "12345", "name": "Yoon", "points" : 5, "isPremi..
ytw_developer
'SwiftUI' 카테고리의 글 목록 (16 Page)