מה זה SwiftUI?

SwiftUI היא המסגרת ההצהרתית של אפל לבניית ממשקי משתמשים בכל פלטפורמות אפל - iOS, iPadOS, macOS, WatchOS ו- TVOS. הציגה בשנת 2019, היא מחליפה את הגישה הנדרשת של UIKit (שם הצלחת באופן ידני עדכונים) עם מס פשוט, מונח מונחה המדינה. in SwiftUI, אתה מתאר את מה UI צריך לחפש וכיצד זה צריך להתנהג, המסגרת ובאופן אוטומטי, ניהול קוד זה מוביל יותר מהיר יותר, קריסת פיתוח.

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

למה לבחור SwiftUI Over UIKit?

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

  • (FLT:0)Less Boilerplate Code: 1 ; אפליקציה פשוטה "שלום, עולם" ב UIKit דורשת לוח התכנון או מספר שורות קוד. in SwiftUI, זהו מבנה יחיד ושורה אחת של טקסט.
  • (ב) ,0) לחיות Preview: FLT:1 Xcodes Canvas מאפשר לך לראות את העדכון UI בזמן אמת בעת ביצוע קוד, המאפשרת השקיה מהירה ללא שכפול.
  • (FLT:0) המדינה-Driven UI:FLT:1 SwiftUI באופן אוטומטי מחדש תצוגות כאשר הנתונים הבסיסיים משתנים, ביטול לוגיקה הסינכרון ידנית הדרושה ב UIKit.
  • (FLT:0Cross-Platform Consistency:FLT:1 כתוב את הדעות שלך פעם אחת והם עובדים על iPhone, iPad, Mac, Mac, Apple Watch ו- Apple TV עם התאמות ספציפיות פלטפורמה מינימלית.
  • (FLT:0)Modern Swift תכונות:FLT:1BuildUI מנף את מערכת הטיפוס המתקדמת של סוויפט, עטיפה רכוש, וכתוצאה מכך בונים ליצור קוד אקספרסיבי ובטוח.

זה אומר, UIKit אינו רלוונטי. עבור אנימציה מורכבת, ציור ברמה נמוכה, או בין-פעולה עם קוד ישן יותר, ייתכן עדיין צריך UIKit. אבל כהתחלה, להתמקד SwiftUI יביא אותך לבנות יישומים אמיתיים מהר יותר.

מתחילים עם SwiftUI

כדי להתחיל, אתה צריך Mac עם FLT:0 Xקוד 14 או מאוחר יותרFLT 1 (Xקוד 15+ מומלץ עבור התכונות האחרונות SwiftUI). הורד Xcode מ- Mac App Store או אתר Apple Developer.

  1. פתח את קוד ה-Xקוד ובחר פרויקט חדש של Xcodes 1
  2. (ב) ,0) ,(ה) כ"הפלטפורמה" (בתרגום חופשי:2,2)
  3. (ה) עיין ב[[המאה ה-20]] ו[[1924]] ו[[1924]]
  4. שם הפרויקט שלך ושמור אותו למיקום הרצוי שלך.

(ב) , בורא עולם יוצר קובץ ברירת מחדל (FLT:0) עם נוף פשוט המציג את "שלום, עולם!", ליד עורך הקוד, תראה בד תצוגה מקדימה אם הבד מוסתר, לחץ על ה-FLT:0EditorcioFLT 1 ובחר את FLT:2 CanvasFLT 3: 3 זה חי תצוגה מקדימה זו הוא החבר הטוב ביותר שלך - כל שינוי שאתה עושה כדי להציג את הקוד באופן מיידי.

האנטומיה של תצוגה SwiftUI

כל השקפה בפרוטוקול FLT:1 , ויישם נכס אחד נדרש:2 (הנכס של ה-FLT 3: 3) מתאר את התוכן וההפצה של הנוף.

import SwiftUI

struct ContentView: View {
 var body: some View {
 Text("Hello, SwiftUI!")
 }
}

(ב) ,5 ,5 , , ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇

ניתן להלחין מספר צפיות באמצעות מכולות הפריסה כמו FLT 7, ו-FLT:8 ו-( לדוגמה:

struct ContentView: View {
 var body: some View {
 VStack {
 Text("Welcome")
 .font(.largeTitle)
 Text("Start building with SwiftUI")
 .foregroundColor(.secondary)
 }
 .padding()
 }
}

כאן, ה-FLT:11 מסדר את ילדיו אנכיים, ואת ה-FLT 12, המנטר מוסיף חלל סביב כל הערימה. Modifiers ניתן לקשור בכל השקפה כדי להתאים אישית את המראה או ההתנהגות שלו.

תמונות ושינויים - בניין הליבה חוסמים

(ב) ויקרא י"א: "וַיָּבְהִיא הוּא הוּא הוּא הוּא הוּא הוּא הוּא הוּא הוּא הוּא הוּא הוּא הוּא הוּא הוּא הוּא הוּא הוּא הוּא הוּא הוּא הוּא הוּא הוּא הוּא הוּא הוּא הוּא הוּא הוּא הוּא הוּא הוּא הוּא הוּא הוּא הוּא הוּא הוּא הוּא הוּא הוּא הוּא הוּא הוּא הוּא הוּא הוּא הוּא הוּא הוּא הוּא הוּא הוּא הוּא הוּא הוּא הוּא הוּא הוּא הוּא הוּא הוּא הוּא הוּא הוּא הוּא הוּא הוּא הוּא הוּא הוּא הוּא הוּא הוּא הוּא הוּא הוּא הוּא הוּא הוּא הוּא הוּא הוּא הוּא הוּא הוּא הוּא הוּא הוּא הוּא הוּא הוּא הוּא הוּא הוּא הוּא הוּא הוּא הוּא הוּא הוּא הוּא הוּא הוּא הוּא הוּא הוּא הוּא הוּא הוּא הוּא הוּא הוּא הוּא הוּא הוּא הוּא

  • (FLT:20) - מגדיר את סגנון הגופן
  • (FLT:21) שינוי צבע טקסט
  • [22: 22]: ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇
  • (ב) ,"ממלא את הרקע עם צבע"
  • (ב) עיין ב[[1924]], [[1924]]
  • (ב) ,(ב) ,(ה) , , , , , , , , , , , , ).

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

ליילוט Containers - VStack, HStack, ZStack

SwiftUI משתמש בשלושה מכולות ערימה עיקריות כדי לארגן צפיות:

  • (ב) ,0) ,VStackásFLT:1 - מסדר ילדים אנכיים (למעלה לתחתית)
  • (ב) ,0) ,HStackásFLT:1 - מסדר ילדים אופקיים (משמאל מימין)
  • (ב) ,0) ,(זסטופל) 1 (הופנה מהדף "הסדר העמוק")

ניתן לרכוש ערימה של מחסניות באופן שרירותי כדי ליצור פריסות מורכבות, כל ערימה תומכת גם ב-FLT:27 ו-FLT:28 פרמטרים.

VStack(alignment: .leading, spacing: 20) {
 Text("Top")
 HStack {
 Text("Left")
 Text("Right")
 }
 ZStack {
 Color.blue
 Text("Overlay")
 .foregroundColor(.white)
 }
 .frame(height: 100)
}

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

ניהול המדינה ב SwiftUI

אחת התכונות החזקות ביותר של SwiftUI היא כיצד היא מטפלת בנתונים דינמיים במקום לעדכן באופן ידני את UI כאשר הנתונים משתנים, אתה מצהיר על הנתונים כ-FLT:0stateFLT:1, ו SwiftUI באופן אוטומטי מחדש את ההשקפות המושפעות.זה מבטל שיעור שלם של באגים הקשורים לסנכרון UI.

סוויפט מספקת מספר להקות (FLT:0) ל-"Tilperty עטיפה" 1 (בשיתוף המדינה), כל אחת מתאימה לתרחישים שונים:

שימוש ב- @state for Local State

(ב) [ה]ב] [ה]]], הוא משמש לערכים פשוטים השייכים אך ורק להשקפה אחת, כגון מצב של מגע/על/off או קלט של שדה טקסט.כאשר הערך משתנה, ההשקפה (FLT:31) היא דוגמה מחודשת:

struct ToggleExample: View {
 @State private var isOn = false

 var body: some View {
 Toggle("Enable Notifications", isOn: $isOn)
 .padding()
 }
}

(ב) ויקרא ה': "וַיָּבְהִיאוּ לַהְיִדָּבְתָּבְתָּבְתָּבְתָּעָה" (בראשית כ"ד, כ"ד)

@Binding for Passing State Down

כאשר הילד צריך לשנות את המדינה בבעלות ההורה, אתה משתמש ב-FLT:37 (הילד מקבל חובה על הערך ויכול לשנות אותו, ואת העדכונים של ראיית ההורה באופן אוטומטי.

struct ParentView: View {
 @State private var showSheet = false

 var body: some View {
 ChildView(showSheet: $showSheet)
 }
}

struct ChildView: View {
 @Binding var showSheet: Bool

 var body: some View {
 Button("Toggle Sheet") {
 showSheet.toggle()
 }
 }
}

Bindings הם דבק המחבר נופים בהיררכיה מבלי להציג משלחת מורכבת או דפוסי קריאה.

אובייקטים בלתי ניתנים להשגה ו- @stateObject

עבור מודלים מורכבים יותר של נתונים משותפים במגוון צפיות, ליצור מחלקה בהתאם ל-FLT:39 בתוך הכיתה, לסמן תכונות עם FLT:40 כך שינויים בעדכון תצוגת ויזואלית ולאחר מכן להשתמש ב-FLT:41 בתצוגה המחזיקה באובייקט.

class UserSettings: ObservableObject {
 @Published var username = "Guest"
}

struct SettingsView: View {
 @StateObject private var settings = UserSettings()

 var body: some View {
 VStack {
 Text("Hello, \(settings.username)")
 TextField("Username", text: $settings.username)
 .textFieldStyle(RoundedBorderTextFieldStyle())
 .padding()
 }
 }
}

(ב) רק כאשר הוא מיישם את האובייקט, אם האובייקט נוצר במקום אחר, השתמש ב-FLT:44 כדי להתבונן בו ללא בעלות.

@EnvironmentObject for Joint State

כאשר אתה צריך להזריק את אותו אובייקט ניתן להתבוננות רבים מבלי לעבור אותו דרך כל ראשוניזדר, השתמש ב-FLT:45.1, ליצור את האובייקט בתצוגת ההורה (למשל, נקודת הכניסה של האפליקציה) ולהזריק אותו באמצעות מאמת נתונים (FLT:46).

@main
struct MyApp: App {
 @StateObject private var settings = UserSettings()

 var body: some Scene {
 WindowGroup {
 ContentView()
 .environmentObject(settings)
 }
 }
}

struct DetailView: View {
 @EnvironmentObject var settings: UserSettings

 var body: some View {
 Text(settings.username)
 }
}

לציור עמוק יותר בניהול המדינה, תיעוד אפל על ניהול מדינת UI המדינה 1FIRECT הוא משאב מצוין.

בניית האפליקציה SwiftUI הראשונה שלך - A Note-Taking App

בואו ליישם את מה שלמדת על ידי בניית אפליקציה פשוטה לסימון.ה אפליקציה תציג רשימה של הערות, לאפשר למשתמש להוסיף חדשים ולהציג פרטים כאשר פתק הוא נצמד.

הקמת מודל הנתונים

צור קובץ Swift חדש בשם FLT:49 ולהגדיר מודל:

import Foundation

struct Note: Identifiable {
 let id = UUID()
 var title: String
 var content: String
}

פרוטוקול LT:51 דורש נכס FLT:52, אשר SwiftUI משתמש כדי להבחין פריטים ברשימה.

יצירת הרשימה View

ב[[1948]], [[1924]], [[1924]]]], [[1924]]]], [[1924]]]], [[1924]]]]]], [[1924]]]]]]]], [[1924]]]]]]]], [[1924]]]]]]]], [[1924]]]]]]]]]]]], [[1924]]]]]]]], [[1924]]]]]]

struct ContentView: View {
 @State private var notes = [
 Note(title: "Hello", content: "This is my first note.")
 ]

 var body: some View {
 NavigationStack {
 List {
 ForEach(notes) { note in
 NavigationLink(destination: NoteDetailView(note: note)) {
 Text(note.title)
 }
 }
 .onDelete(perform: removeNote)
 }
 .navigationTitle("Notes")
 .toolbar {
 ToolbarItem(placement: .navigationBarTrailing) {
 Button(action: addNote) {
 Image(systemName: "plus")
 }
 }
 }
 }
 }

 private func addNote() {
 notes.append(Note(title: "New Note", content: ""))
 }

 private func removeNote(at offsets: IndexSet) {
 notes.remove(atOffsets: offsets)
 }
}

(הופנה מהדף [[1924]]]] ו[[1924]]]], [[1924]]]]]], [[1924]]]], [[1924]]]]]], [[1924]]]]]]

הוספת ניווט ותצוגה מפורטת

יצירת קובץ חדש (FLT:60) שלוקח קובץ:61 ומאפשר עריכה.לעבוד, אנו נציג את הכותרת ואת התוכן במצב לקריאה בלבד.

struct NoteDetailView: View {
 let note: Note

 var body: some View {
 VStack(alignment: .leading, spacing: 16) {
 Text(note.title)
 .font(.title)
 Text(note.content)
 .font(.body)
 .foregroundColor(.secondary)
 Spacer()
 }
 .padding()
 .navigationTitle("Note")
 }
}

הפעל את האפליקציה בסימולטור או תצוגה מקדימה.You תראה רשימה של הערות, באפשרותך להוסיף חדשים, הקש כדי להציג פרטים, ו להחליק כדי למחוק. אפליקציה בסיסית זו מציגה רשימה, ניווט, מצב וזרימת נתונים - כל תבניות הליבה SwiftUI.

ויכוחים ודעה קדומה

הבד המקדימה של SwiftUI הוא הכלי העיקרי שלך bugging.אם נוף לא נראה נכון, לבדוק את שרשרת המנטר ולוודא שאתה משתמש במיכל הפריסה הנכון.

  • חסר:64 צפיות לחוד החנית
  • סדר לא נכון של מחוקקים (למשל, רקע לפני ⁇ ).
  • שימוש ב-FLT:65 ללא סייגים.

ניתן להוסיף (ב) ,66 הצהרות בתוך ה-FLT:67 או בלחצנים כדי לאמת שינויים ממלכתיים.

טכניקה נוספת חזקה היא להשתמש ב-FLT:68 כדי לראות כיצד UI שלך מסתכל על גדלים שונים של מכשירים.You יכול גם להוסיף מקרים תצוגה מקדימה מרובים כדי להשוות וריאציות:

struct ContentView_Previews: PreviewProvider {
 static var previews: some View {
 Group {
 ContentView()
 .previewDevice("iPhone 15 Pro")
 ContentView()
 .previewDevice("iPhone SE (3rd generation)")
 }
 }
}

ביצועים ועיסוקים טובים

SwiftUI נועד להיות יעיל, אבל יש שיטות כדי לשמור על היישומים שלך פועל בצורה חלקה:

  • (ב) ,0) מודלים בלתי אפשריים של ההרחבה: (FLT:0) לרשימות כדי לעזור ל- SwiftUI diff ולעדכן רק ששינו שורות.
  • (FLT:0) שמור על נופים קטנים של ההרחבה 1:1 - לשבור צפיות גדולות לרכיבים קטנים יותר, ניתנים לחזרה מחדש.זה משפר את יכולת הקריאה ומאפשר לעדכונים המתקדמים של SwiftUI לעבוד יותר גריפית.
  • (ב) ,0) ,[דרוש מקור] ב[[1924]], [[1924]]]], [[1924]]]]]]]], [[1924]]]]]]]], [[1924]]]]]]]]]]]]]], [[1924]]]]]]]], [[1924]]]]]]]]]]]]]]
  • (ב) [13] ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇
  • (ב) [15] ,5 ,5 ,5 ,5 ,5 ,5 ,5 ,5 ; ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇
  • (ב) ויקרא י"ד:2 ,2 ,2 ,2 ,2 ,2 ,SwiftUIFLT 3 תבנית ב- Instruments מסייע לזהות עדכונים ולהציג צווארי בקבוק.

עבור טיול יסודי של ביצועי SwiftUI, לבדוק את זה FLT:0 מונח על ידי סוויפט עם מג'דבנדר 1.

צעדים ומשאבים

יש לך עכשיו בסיס מוצק ב SwiftUI. להמשיך ללמוד ולבנות יישומים מתקדמים יותר:

  • (ב) ,0) ,המדריך הרשמי של אפל (Explore Apple) ,(FLT:2SwiftUI TutorialsFLT 3) מאפל צועדת דרך בניית שלב אפליקציה שלם לאחר שלב.
  • (ב) ויקרא האקינג עם סוויפט 10:1 - פול הדסון (FLT:2100 ימי SwiftUIIRFLT 3: 3) הוא קורס חופשי, מקיף.
  • (FLT:0) ,DIVE into reactive Patterns: Learnשלב (המסגרת של Apple) כדי להתמודד עם זרמי נתונים סינכרוניים צינורות נתונים מורכבים.
  • (FLT:0) בניית פרויקט אמיתיFLT:1 - בחר מושג אפליקציה פשוט (שבלק, רשימת אדו, מעקב הרגל) וליישם אותו מאפס.
  • (FLT:0) יוין הקהילה הלאומית של 1:1 - הפורומים סוויפט, פורומים של Apple Developer, ואת ה- subreddit r / SwiftUI הם מקומות גדולים לשאול שאלות ולשתף את העבודה שלך.

מסקנה

SwiftUI מייצג שינוי פרדיגמטי בפיתוח פלטפורמה של Apple.ה syntax, עדכונים מונעים על ידי המדינה אוטומטית, וחי תצוגה מקדימה להפוך אותו המסגרת האידיאלית עבור מפתחי iOS חדשים להתחיל לבנות יישומים פונקציונליים, יפה במהירות.

המשך הניסוי - לשנות את הדוגמאות במדריך זה, לשבור אותם, לתקן אותם.כל ההצתה מחזקת את ההבנה שלך.כפי שאתה גדל, אתה תגלה איך SwiftUI משתלב עם מסגרות אחרות של אפל כמו Core נתונים, CloudKit, ו- Swift Charts. הכישורים שאתה מפתח כאן ישמש אותך היטב בכל פלטפורמות אפל.