0Pricing
Swift Academy · درس

المعاملات: ‏map وfilter وcombineLatest

حوّلوا تدفقات الناشرين وادمجوها باستخدام معاملات Combine.

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

مرحبًا

تعمل Operators في Combine على تحويل تدفقات الناشرين وتصفيتها ودمجها. وتوجد بين الناشر والمشترك في خط المعالجة.

map

```swift [1,2,3].publisher .map { $0 * 2 } .sink { print($0) } // 2, 4, 6 ```

filter

```swift (1...10).publisher .filter { $0 % 2 == 0 } .sink { print($0) } // 2,4,6,8,10 ```

compactMap

```swift ["1","two","3"].publisher .compactMap { Int($0) } .sink { print($0) } // 1, 3 ```

combineLatest

```swift let usernamePublisher = usernameField.textPublisher let passwordPublisher = passwordField.textPublisher usernamePublisher .combineLatest(passwordPublisher) .map { !$0.isEmpty && $1.count >= 8 } .assign(to: &loginButton.$isEnabled) ```

merge

```swift merge(upstream1, upstream2) .sink { print($0) } // interleaved values from both ```

zip

```swift zip(publisher1, publisher2) .sink { print($0, $1) } // pairs values one-to-one ```

flatMap

```swift urls.publisher .flatMap { url in URLSession.shared.dataTaskPublisher(for: url).map(\.data) } .sink { data in ... } ```

debounce

```swift searchTextField.textPublisher .debounce(for: 0.3, scheduler: RunLoop.main) .removeDuplicates() .sink { self.search($0) } .store(in: &cancellables) ```

receive(on:)

```swift networkPublisher .receive(on: DispatchQueue.main) .sink { self.updateUI($0) } ```

تحقق سريع

ما هو معامل Combine الذي لا يُصدر قيمة إلا عندما تكون جميع الناشرات في المنبع قد أصدرت قيمًا جديدة؟

مراجعة

أهم النقاط: • `map` و`filter` و`compactMap` — تحويل عناصر التدفق • `combineLatest` — أحدث قيمة من كليهما؛ و`zip` — إقران واحد بواحد • `flatMap` — تسطيح الناشرات الداخلية غير المتزامنة • `debounce` — الانتظار حتى الصمت قبل الإصدار • `receive(on:)` — تبديل المجدول لتنفيذ أعمال واجهة المستخدم التالي: Subjects.

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

هل درس «المعاملات: ‏map وfilter وcombineLatest» مجاني؟

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

ماذا ستتعلم في «المعاملات: ‏map وfilter وcombineLatest»؟

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

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

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

كم من الوقت يستغرق درس «المعاملات: ‏map وfilter وcombineLatest»؟

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

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

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

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

  1. الناشرون والمشتركون
  2. المعاملات: ‏map وfilter وcombineLatest
  3. ‏PassthroughSubject وCurrentValueSubject
  4. الشبكات باستخدام Combine وURLSession
← العودة إلى Swift Academy