0Pricing
Swift Academy · درس

إنشاء غلاف خصائص مخصّص

نفّذوا @propertyWrapper باستخدام wrappedValue لتغليف المنطق.

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

مرحبًا

تغلف مغلفات الخصائص منطق تخزين الخصائص، ما يتيح إعادة استخدام التعليمات النمطية مثل التحقق والتحويل والحفظ.

الصياغة الأساسية

```swift @propertyWrapper struct Clamped { var wrappedValue: Int { didSet { wrappedValue = min(max(0,wrappedValue),100) } } init(wrappedValue: Int) { self.wrappedValue = min(max(0,wrappedValue),100) } } struct Gauge { @Clamped var level = 50 } var g = Gauge() g.level = 150 // clamped to 100 ```

متطلب `wrappedValue`

يجب أن يعرّف كل مغلف خصائص `wrappedValue`. هذه هي القيمة التي يقرأها مستخدم المغلف ويكتبها.

مغلفات خصائص عامة

```swift @propertyWrapper struct Logged { private var value: T var wrappedValue: T { get { print("get"); return value } set { print("set to \(newValue)"); value = newValue } } init(wrappedValue: T) { value = wrappedValue } } ```

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

```swift struct Model { @Logged var name: String = "Default" } var m = Model() let n = m.name // prints "get" m.name = "Alice" // prints "set to Alice" ```

وسيطات مخصصة للمهيئ

```swift @propertyWrapper struct Default { var wrappedValue: T init(wrappedValue: T) { self.wrappedValue = wrappedValue } init(_ default: T) { wrappedValue = default } } @Default(42) var count: Int ```

المغلف مع خاصية مخزنة مقابل محسوبة

تضيف مغلفات الخصائص تخزينًا مخفيًا (`_wrappedValue`). والخاصية الموسومة ليست سوى صياغة مختصرة: ```swift @Clamped var level = 50 // Desugars to: var _level = Clamped(wrappedValue: 50) var level: Int { get { _level.wrappedValue } set { _level.wrappedValue = newValue } } ```

مغلف UserDefaults

```swift @propertyWrapper struct UserDefault { let key: String; let defaultValue: T var wrappedValue: T { get { UserDefaults.standard.object(forKey: key) as? T ?? defaultValue } set { UserDefaults.standard.set(newValue, forKey: key) } } } @UserDefault(key:"theme",defaultValue:"light") var theme: String ```

مغلف آمن بين الخيوط

```swift @propertyWrapper final class Atomic { private var value: T; private let lock = NSLock() var wrappedValue: T { get { lock.lock(); defer { lock.unlock() }; return value } set { lock.lock(); defer { lock.unlock() }; value = newValue } } init(wrappedValue: T) { value = wrappedValue } } ```

دمج المغلفات في نوع

```swift struct Settings { @Clamped var volume = 50 @UserDefault(key:"username",defaultValue:"") var username: String @Logged var debugMode = false } ```

تحقق سريع

ما الخاصية المطلوبة في كل نوع من أنواع `@propertyWrapper`؟

مراجعة

أهم النقاط: • `@propertyWrapper` مع `wrappedValue` يكوّنان مغلف خصائص بسيطًا • يضيف المغلف تخزينًا مخفيًا باسم `_name` • تعمل المغلفات العامة مع أي نوع T • الاستخدامات الشائعة: تقييد القيم، والتسجيل، وUserDefaults، وأمان الخيوط • تتيح وسيطات المهيئ المخصصة ضبط الإعدادات التالي: القيم المُسقطة.

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

هل درس «إنشاء غلاف خصائص مخصّص» مجاني؟

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

ماذا ستتعلم في «إنشاء غلاف خصائص مخصّص»؟

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

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

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

كم من الوقت يستغرق درس «إنشاء غلاف خصائص مخصّص»؟

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

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

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

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

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