0Pricing
Swift Academy · درس

الشبكات باستخدام Combine وURLSession

استخدموا URLSession.dataTaskPublisher مع Combine لمعالجة استجابات الشبكة.

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

مرحبًا

يوفر URLSession دعمًا مضمّنًا لـ Combine عبر `dataTaskPublisher`. وبدمجه مع `decode`، يتيح إنشاء خطوط معالجة آمنة الأنواع للشبكات في بضعة أسطر فقط.

dataTaskPublisher

```swift URLSession.shared .dataTaskPublisher(for: URL(string:"https://api.example.com/users")!) .sink(receiveCompletion: { print($0) }, receiveValue: { data, response in print(data.count) }) .store(in: &cancellables) ```

فك ترميز JSON

```swift struct User: Decodable { var name: String; var id: Int } URLSession.shared .dataTaskPublisher(for: url) .map(\.data) .decode(type: [User].self, decoder: JSONDecoder()) .receive(on: DispatchQueue.main) .sink(receiveCompletion: { print($0) }, receiveValue: { users in self.users = users }) .store(in: &cancellables) ```

معالجة الأخطاء باستخدام catch

```swift .catch { error -> AnyPublisher<[User],Never> in print("Error: \(error)") return Just([]).eraseToAnyPublisher() } ```

retry

```swift .retry(3) // retry up to 3 times on failure ```

التحقق من حالة HTTP

```swift .tryMap { data, response -> Data in guard let http = response as? HTTPURLResponse, (200...299).contains(http.statusCode) else { throw URLError(.badServerResponse) } return data } ```

إنشاء Publisher عام

```swift func fetch(_ url: URL) -> AnyPublisher { URLSession.shared.dataTaskPublisher(for: url) .map(\.data) .decode(type: T.self, decoder: JSONDecoder()) .eraseToAnyPublisher() } ```

الإلغاء

```swift var searchCancellable: AnyCancellable? searchCancellable?.cancel() // cancel previous searchCancellable = fetch(url).sink { ... } ```

استخدام flatMap للطلبات المتسلسلة

```swift fetch(userUrl) .flatMap { user in fetch(user.profileUrl) } .sink { profile in render(profile) } .store(in: &cancellables) ```

دمج طلبات متعددة

```swift Publishers.Zip(fetch(url1), fetch(url2)) .sink { a, b in combinedUI(a, b) } .store(in: &cancellables) ```

تحقق سريع

أي معامل في Combine يفك ترميز مخرجات Publisher إلى نوع Decodable؟

مراجعة

أهم النقاط: • `dataTaskPublisher(for:)` — جلب عناوين URL باستخدام Combine • `.map(\.data)` → `.decode(type:decoder:)` لمعالجة JSON • يتحقق `.tryMap` من حالة HTTP • يعيد `.retry(n)` المحاولة تلقائيًا • يوفر `.catch { }` Publisher احتياطيًا اكتملت الدورة! التالي: Swift Structured Concurrency.

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

هل درس «الشبكات باستخدام Combine وURLSession» مجاني؟

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

ماذا ستتعلم في «الشبكات باستخدام Combine وURLSession»؟

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

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

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

كم من الوقت يستغرق درس «الشبكات باستخدام Combine وURLSession»؟

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

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

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

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

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