【Swift UI】ObservableObject와 ObservedObject를 이해하기 위한 시계 앱

이 기사는 무엇인가



SwiftUI 프레임워크를 통한 앱 개발의 데이터 흐름을 이해하기 위해 간단한 시계 앱을 만듭니다.

환경



macOS 11.1
Xcode 12.3
Swift 5.3

코드



앱 진입점
@main
struct WatchApp: App {
    let clock = Clock()

    var body: some Scene {
        WindowGroup {
            ContentView(clock: clock)
        }
    }
}

ObservableObject 클래스
class Clock: ObservableObject {
    var timer = Timer()
    @Published var currentTime = ""

    init() {
        start()
    }

    func start() {
        let formatter = DateFormatter()
        formatter.timeStyle = .medium
        timer = Timer.scheduledTimer(withTimeInterval: 1.0, repeats: true, block: { (_) in
            self.currentTime = formatter.string(from: Date())
        })
    }

    func stop() {
        timer.invalidate()
    }
}

ContentView
import SwiftUI

struct ContentView: View {
    @ObservedObject var clock = Clock()

    var body: some View {
        Text("\(clock.currentTime)")
            .font(.title)
    }
}

struct ContentView_Previews: PreviewProvider {
    static var previews: some View {
        Group {
            ContentView(clock: Clock())
        }
    }
}

좋은 웹페이지 즐겨찾기