0Pricing
Swift Academy · درس

‏@EnvironmentObject للحالة المشتركة

احقنوا النماذج المشتركة في التسلسلات الهرمية العميقة للعروض دون تمرير الخصائص عبر كل مستوى.

‏@EnvironmentObject للحالة المشتركة درس مجاني في Swift Academy على CoddyKit. هذا هو الدرس 3 من أصل 4. يمكنك قراءة الدرس كاملاً أدناه مجاناً — ثم تمرن عليه مباشرة في المتصفح باستخدام محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7. هذا الدرس جزء من مسار التعلم في Swift Academy، وتقدمك يتزامن عبر الويب وتطبيق CoddyKit. تتضمن دورة Swift Academy 4 دروس في المجموع.

مرحبًا

يحقن `@EnvironmentObject` نموذجًا مشتركًا في أي عرض ضمن التسلسل الهرمي من دون تمريره صراحةً — وهو مثالي لحالة التطبيق العامة، مثل مصادقة المستخدم أو إعدادات السمة.

الحقن في التسلسل الهرمي

```swift struct App: App { @StateObject var authModel = AuthModel() var body: some Scene { WindowGroup { RootView().environmentObject(authModel) } } } ```

الاستهلاك باستخدام @EnvironmentObject

```swift struct ProfileView: View { @EnvironmentObject var auth: AuthModel var body: some View { Text("Hello, \(auth.username)!") } } // No init parameter needed — auto-injected from environment ```

تعطل التطبيق عند غياب Environment Object

إذا استخدمت `@EnvironmentObject` من دون حقن الكائن، فسيتعطل التطبيق أثناء التشغيل: ``` Fatal error: No ObservableObject of type AuthModel found. A View.environmentObject(_:) must be attached to ancestor. ```

EnvironmentObject في المعاينات

```swift #Preview { ProfileView().environmentObject(AuthModel.mock) } ```

Environment Objects متعددة

```swift RootView() .environmentObject(authModel) .environmentObject(cartModel) .environmentObject(themeModel) ``` يُحدَّد كل نوع باستخدام نوعه — ولا تحدث تعارضات في الأسماء.

مقارنة: @EnvironmentObject و@ObservedObject

• `@ObservedObject` — معامل صريح في المُهيِّئ، ما يجعل التبعيات واضحة • `@EnvironmentObject` — لا يحتاج إلى معامل في المُهيِّئ، ويُحقن ضمنيًا فضّل `@ObservedObject` من أجل الوضوح؛ واستخدم `@EnvironmentObject` للحالة العامة فعلًا.

حقن العروض المتداخلة

```swift View A (.environmentObject(model)) └── View B (@EnvironmentObject var model) ✓ └── View C (@EnvironmentObject var model) ✓ — inherits ```

@Environment لقيم النظام

لا تخلط بينه وبين `@Environment` (من دون اللاحقة Object): ```swift @Environment(\.colorScheme) var scheme // system dark/light @Environment(\.locale) var locale // current locale ```

نمط عملي: AppModel

```swift @Observable class AppModel { var isLoggedIn = false var username = "" var cart: [Item] = [] } ``` النهج الحديث: حقن نموذج تطبيق واحد من نوع `@Observable` في الجذر.

تحقق سريع

ماذا يحدث إذا استخدمت `@EnvironmentObject` من دون حقنه؟

مراجعة

أهم النقاط: • يحقن `.environmentObject(model)` النموذج في الشجرة الفرعية بأكملها • `@EnvironmentObject var m: ModelType` — يُحقن تلقائيًا ولا يحتاج إلى معامل • غياب الحقن = تعطل أثناء التشغيل • احرص أيضًا على الحقن في المعاينات • استخدم `@Environment(\.key)` لقيم النظام (واجهة برمجية مختلفة) التالي: مصدر الحقيقة الواحد.

الأسئلة الشائعة

هل درس «‏@EnvironmentObject للحالة المشتركة» مجاني؟

نعم — نص درس «‏@EnvironmentObject للحالة المشتركة» كامل متاح مجاناً هنا على الويب. لتمرينه بشكل تفاعلي (محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7) وفتح باقي دورة Swift Academy، انتقل إلى CoddyKit PRO. تتضمن دورة Swift Academy 4 دروس في المجموع.

ماذا ستتعلم في «‏@EnvironmentObject للحالة المشتركة»؟

احقنوا النماذج المشتركة في التسلسلات الهرمية العميقة للعروض دون تمرير الخصائص عبر كل مستوى. تتمرن على Swift Academy مع أكواد عملية تشغلها مباشرة في المتصفح، ومدرس ذكاء اصطناعي متاح 24/7 يجيب على أسئلتك أثناء عملك.

هل أحتاج إلى خبرة سابقة لأبدأ Swift Academy؟

لا تُشترط خبرة سابقة. Swift Academy على CoddyKit منظم للمبتدئين حتى المتقدمين، لذا يمكنك البدء من هنا أو من البداية والتقدم بسرعتك الخاصة. هذا هو الدرس 3 من أصل 4.

كم من الوقت يستغرق درس «‏@EnvironmentObject للحالة المشتركة»؟

معظم دروس CoddyKit تستغرق حوالي 5–10 دقائق. كل منها موجز وتفاعلي، لذا تحرز تقدماً مستمراً وتستأنف من حيث توقفت عبر الويب والتطبيق.

هل يمكنني كتابة وتشغيل أكواد في درس Swift Academy هذا؟

نعم. كل درس في Swift Academy يتضمن محرر أكواد مدمج، لذا تكتب وتشغل أكواداً حقيقية مباشرة في متصفحك وتحصل على تعليقات فورية من الذكاء الاصطناعي — بدون إعداد محلي.

جميع الدروس في هذه الدورة

  1. ‏@Binding: تدفق البيانات ثنائي الاتجاه
  2. ‏@ObservableObject و@StateObject
  3. ‏@EnvironmentObject للحالة المشتركة
  4. المصدر الوحيد للحقيقة والتدفق أحادي الاتجاه
← العودة إلى Swift Academy