0Pricing
Swift Academy · درس

القيم المُسقطة باستخدام $binding

اعرضوا projectedValue لتوفير وظائف إضافية عبر البادئة $.

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

مرحبًا

تمنح القيم المُسقطة، التي يُوصل إليها عبر `$`، مغلفات الخصائص واجهة ثانوية — وتستخدمها SwiftUI في `@State` و`@Published` لعرض `Binding` و`Publisher`.

إضافة `projectedValue`

```swift @propertyWrapper struct Toggle { var wrappedValue: Bool = false var projectedValue: String { wrappedValue ? "ON" : "OFF" } } struct Model { @Toggle var active } var m = Model() print(m.$active) // "OFF" — projected value accessed with $ ```

نوع `projectedValue`

يمكن أن تكون القيمة المُسقطة من أي نوع — مثل `Binding` أو `Publisher` أو `String` أو نوع مخصص. تُسقط `@State` في SwiftUI قيمة من النوع `Binding` تتيح تدفق البيانات في الاتجاهين.

مثال على إسقاط Binding

```swift // @State projects Binding: @State var isOn = false Toggle(isOn: $isOn) // $isOn is Binding ```

إسقاط Binding مخصص

```swift @propertyWrapper struct Validated { var wrappedValue: String var projectedValue: Bool { !wrappedValue.isEmpty } } struct Form { @Validated var email = "" } var f = Form() f.email = "hi@example.com" print(f.$email) // true — projected Bool ```

إسقاط `@Published`

```swift class VM: ObservableObject { @Published var score = 0 } let vm = VM() let cancellable = vm.$score // Publisher .sink { print("Score: \($0)") } vm.score = 10 // "Score: 10" ```

الوصول إلى `projectedValue` داخل المغلف

```swift @propertyWrapper struct History { private var current: T private(set) var projectedValue: [T] = [] var wrappedValue: T { get { current } set { projectedValue.append(current); current = newValue } } init(wrappedValue: T) { current = wrappedValue } } ```

استخدام مغلف السجل

```swift struct Counter { @History var count = 0 } var c = Counter() c.count = 1; c.count = 5; c.count = 3 print(c.$count) // [0,1,5] — history of old values ```

إزالة الالتباس في صياغة `$`

```swift struct Form { @State var text = "" var body: some View { TextField("Enter", text: $text) // $text is Binding } } // text → String (wrappedValue) // $text → Binding (projectedValue) ```

اعتبارات التصميم

• `projectedValue` اختيارية — أضفها فقط عند الحاجة إلى واجهة ثانوية • يمكن أن يختلف نوعها تمامًا عن نوع `wrappedValue` • استخدم `$` في موضع الاستدعاء للوصول إلى القيمة المُسقطة • تفيد القيم المُسقطة كثيرًا مع ناشري Combine وارتباطات SwiftUI

تحقق سريع

كيف تصل إلى `projectedValue` الخاصة بمغلف خصائص؟

مراجعة

أهم النقاط: • تمنح `projectedValue` المغلفات واجهة API ثانوية عبر `$` • يمكن أن تكون من أي نوع — Binding أو Publisher أو Bool أو Array • تُسقط `@State` قيمة `Binding`، بينما تُسقط `@Published` قيمة `Publisher` • يمكنك الوصول إليها باستخدام `$propertyName` في كل من body وموضع الاستدعاء • أضفها فقط عندما تضيف الواجهة الثانية قيمة فعلية التالي: @Published وCombine.

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

هل درس «القيم المُسقطة باستخدام $binding» مجاني؟

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

ماذا ستتعلم في «القيم المُسقطة باستخدام $binding»؟

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

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

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

كم من الوقت يستغرق درس «القيم المُسقطة باستخدام $binding»؟

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

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

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

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

  1. إنشاء غلاف خصائص مخصّص
  2. القيم المُسقطة باستخدام $binding
  3. ‏@Published والمراقبة في Combine
  4. تركيب أغلفة خصائص متعددة
← العودة إلى Swift Academy