Menu
Coddy logo textTech

אובייקטים נצפים

חלק מהיחידה מבוא ל-SwiftUI במסלול ה-Swift של Coddy. שיעור 40 מתוך 50.

נתונים שכמה תצוגות חולקות, או שיש להם לוגיקה משלהם, שייכים למחלקה. היא תואמת ל־ObservableObject, וכל מאפיין שמוצג במסך מסומן ב־@Published:

class Cart: ObservableObject {
    @Published var count = 0

    func add() {
        count += 1
    }
}

התצוגה שיוצרת את האובייקט שומרת אותו באמצעות @StateObject. SwiftUI משאירה את האובייקט הזה בחיים כל עוד התצוגה מוצגת על המסך, ומציירת מחדש את התצוגה בכל פעם שמאפיין שפורסם משתנה:

struct ContentView: View {
    @StateObject private var cart = Cart()

    var body: some View {
        VStack {
            Text("Items: \(cart.count)")
            Button("Add to cart") {
                cart.add()
            }
        }
    }
}

תצוגת בת שמקבלת אובייקט קיים מתצוגת האב שלה מסמנת אותו במקום זאת בתור @ObservedObject: היא עוקבת אחר האובייקט אך אינה הבעלים שלו.

challenge icon

אתגר

בינוני

המחלקה Scoreboard אינה מחוברת למסך. הפוך אותה ל-ObservableObject עם points מסוג @Published, שמור אותה ב-ContentView באמצעות @StateObject, ודאג שהכפתור יקרא ל-scoreboard.score(). לאחר הקשה אחת, הטקסט חייב להציג Points: 10.

נסו בעצמכם

import SwiftUI

@main
struct CoddyApp: App {
    var body: some Scene {
        WindowGroup {
            ContentView()
        }
    }
}
quiz iconבחנו את עצמכם

השיעור הזה כולל חידון קצר. התחילו את השיעור כדי לענות עליו ולעקוב אחרי ההתקדמות.

כל השיעורים ביחידה מבוא ל-SwiftUI

תרגלו בעצמכם: SwiftUI אונליין