0Pricing
Swift Academy · درس

‏@Binding: تدفق البيانات ثنائي الاتجاه

مرّروا الحالة القابلة للتعديل عبر التسلسل الهرمي للعروض باستخدام @Binding والبادئة $.

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

مرحبًا

تنشئ `@Binding` اتصالًا ثنائي الاتجاه بين حالة العنصر الأب والعرض الابن، مما يتيح للعرض الابن قراءة قيمة العنصر الأب وكتابتها من دون امتلاكها.

إنشاء Binding

```swift struct Parent: View { @State private var name = "" var body: some View { ChildView(name: $name) // $ creates Binding } } struct ChildView: View { @Binding var name: String var body: some View { TextField("Name", text: $name) } } ```

البادئة $

تعيد `$name` عند استخدامها مع خاصية `@State` قيمة من النوع `Binding` — وهي مرجع إلى مساحة تخزين العنصر الأب، وتتيح القراءة والكتابة في الاتجاهين.

الكتابة من خلال Binding

```swift struct Toggle: View { @Binding var isOn: Bool var body: some View { Button(isOn ? "On" : "Off") { isOn.toggle() } } } ```

Binding ثابت لمعاينات العرض

```swift #Preview { ChildView(isOn: .constant(true)) // non-mutable binding for preview } ```

Binding لعنصر في مجموعة

```swift ForEach($items) { $item in // $items is Binding<[Item]> TextField("Name", text: $item.name) } ```

ملخص @State و@Binding

• `@State` — *يمتلك* القيمة وتعيش في العرض • `@Binding` — *يشير إلى* حالة عرض آخر ولا يمتلكها • تنتقل التغييرات التي تتم عبر `@Binding` مجددًا إلى المالك

Binding مشتق

```swift let isLarge: Binding = $fontSize.map( get: { $0 > 18 }, set: { $0 ? 24 : 14 } ) ```

Binding<Optional>

```swift if let $item = $selectedItem { DetailView(item: $item) } ``` يدعم Swift 5.7+ الربط الاختياري باستخدام `if let $binding`.

Bindings متعددة

```swift struct Form: View { @State private var name = "" @State private var age = 0 var body: some View { FormFields(name: $name, age: $age) } } ```

تحقق سريع

ماذا تُعيد البادئة `$` في خاصية `@State`؟

مراجعة

أهم النقاط: • `@Binding var x: T` — مرجع للقراءة والكتابة، ولا يمتلك القيمة • تنشئ `$stateProperty` قيمة من النوع `Binding` • استخدم `.constant(value)` لعمليات Binding غير القابلة للتعديل في المعاينات • تحدّث كتابة العنصر الابن عبر `@Binding` قيمة `@State` في العنصر الأب • استخدم `ForEach($collection) { $element in }` للتكرار القابل للتعديل التالي: @ObservableObject.

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

هل درس «‏@Binding: تدفق البيانات ثنائي الاتجاه» مجاني؟

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

ماذا ستتعلم في «‏@Binding: تدفق البيانات ثنائي الاتجاه»؟

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

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

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

كم من الوقت يستغرق درس «‏@Binding: تدفق البيانات ثنائي الاتجاه»؟

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

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

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

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

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