حالات التحميل والخطأ
اعرض مؤشرات التحميل وتعامل مع حالات الفشل بسلاسة
حالات التحميل والخطأ درس مجاني في SwiftUI Academy على CoddyKit. هذا هو الدرس 4 من أصل 4. يمكنك قراءة الدرس كاملاً أدناه مجاناً — ثم تمرن عليه مباشرة في المتصفح باستخدام محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7. هذا الدرس جزء من مسار التعلم في SwiftUI Academy، وتقدمك يتزامن عبر الويب وتطبيق CoddyKit. تتضمن دورة SwiftUI Academy 4 دروس في المجموع.
بعض أجزاء هذا الدرس لم تُترجم بعد وتظهر باللغة الإنجليزية.
Every Fetch Has Phases
A real request moves through states: loading, success, and failure. Showing each one makes your app feel trustworthy. 🔄
Modeling State with an Enum
An enum captures each phase cleanly. The view then switches on it to decide exactly what to display.
enum Phase { case loading, loaded([User]), failed(String) }Showing a Spinner
While loading, show a ProgressView. This native spinner reassures users that something is happening behind the scenes.
ProgressView("Loading...")Switching on the Phase
Use a switch in your body to render a spinner, the data, or an error view based on the current phase.
switch phase {
case .loading: ProgressView()
case .failed(let msg): Text(msg)
case .loaded(let users): List(users)
}Catching the Error
Wrap the fetch in do/catch and move to the failed phase on error, storing a friendly message for the screen.
catch { phase = .failed("Could not load") }Friendly Error Messages
Avoid raw error text. Show a clear sentence the user understands, like "Check your connection and try again."
Offering a Retry
On failure, add a retry button that runs the fetch again. Letting users recover beats a dead-end error screen.
Button("Retry") { Task { await load() } }The Empty State
Success with no data deserves its own empty view, like "No results yet", so the screen never looks broken.
Setting Loading First
Move to the loading phase before awaiting. That instantly shows the spinner so the screen never feels frozen.
phase = .loading
phase = .loaded(try await loadUsers())Avoiding Flicker
For very fast responses, a tiny delay before hiding the spinner prevents a jarring flash of loading UI.
Wiring It to .task
Kick off the whole flow from .task, which sets loading, fetches, and lands on loaded or failed automatically.
.task { await load() }Quick Check
Quick check on handling request phases.
Recap: States
You now model fetches as loading, loaded, and failed, show a spinner and friendly errors with retry, and drive it all from .task. 🎯
تعلم Swift مع معلم ذكاء اصطناعي — مجانًا
اكتب وقم بتشغيل أكوادك الفعلية في المتصفح، واحصل على مساعدة فورية من معلم ذكاء اصطناعي متاح 24/7، واستمر من حيث توقفت على الويب أو في التطبيق.
- الدورات
- 30
- الدروس
- 120
الأسئلة الشائعة
هل درس «حالات التحميل والخطأ» مجاني؟
نعم — نص درس «حالات التحميل والخطأ» كامل متاح مجاناً هنا على الويب. لتمرينه بشكل تفاعلي (محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7) وفتح باقي دورة SwiftUI Academy، انتقل إلى CoddyKit PRO. تتضمن دورة SwiftUI Academy 4 دروس في المجموع.
ماذا ستتعلم في «حالات التحميل والخطأ»؟
اعرض مؤشرات التحميل وتعامل مع حالات الفشل بسلاسة تتمرن على SwiftUI Academy مع أكواد عملية تشغلها مباشرة في المتصفح، ومدرس ذكاء اصطناعي متاح 24/7 يجيب على أسئلتك أثناء عملك.
هل أحتاج إلى خبرة سابقة لأبدأ SwiftUI Academy؟
لا تُشترط خبرة سابقة. SwiftUI Academy على CoddyKit منظم للمبتدئين حتى المتقدمين، لذا يمكنك البدء من هنا أو من البداية والتقدم بسرعتك الخاصة. هذا هو الدرس 4 من أصل 4.
كم من الوقت يستغرق درس «حالات التحميل والخطأ»؟
معظم دروس CoddyKit تستغرق حوالي 5–10 دقائق. كل منها موجز وتفاعلي، لذا تحرز تقدماً مستمراً وتستأنف من حيث توقفت عبر الويب والتطبيق.
هل يمكنني كتابة وتشغيل أكواد في درس SwiftUI Academy هذا؟
نعم. كل درس في SwiftUI Academy يتضمن محرر أكواد مدمج، لذا تكتب وتشغل أكواداً حقيقية مباشرة في متصفحك وتحصل على تعليقات فورية من الذكاء الاصطناعي — بدون إعداد محلي.
جميع الدروس في هذه الدورة
- فك ترميز JSON باستخدام Codable
- استدعاء APIs باستخدام URLSession
- معدّل .task
- حالات التحميل والخطأ