Swift Academy · Lektion

Nätverk med Combine och URLSession

Använd URLSession.dataTaskPublisher med Combine för att hantera nätverkssvar.

Lektion 4 av 412 steg

Nätverk med Combine och URLSession är en gratis lektion i Swift Academy på CoddyKit. Detta är lektion 4 av 4. Du kan läsa vilka 3 lektioner som helst i den här lärvägen kostnadsfritt i sin helhet – därefter låser CoddyKit PRO upp alla lektioner, plus praktisk övning med en inbyggd kodredigerare och en AI-lärare dygnet runt. Den ingår i lärvägen för Swift Academy, och Era framsteg synkroniseras mellan webben och CoddyKit-appen. Kursen i Swift Academy innehåller totalt 4 lektioner.

Välkommen

URLSession har inbyggt Combine-stöd via `dataTaskPublisher`. Tillsammans med `decode` skapar det typsäkra nätverkspipelines på bara några rader.

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) ```

Avkoda 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) ```

Felhantering med 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 ```

Validera HTTP-status

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

Skapa en generell Publisher

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

Avbryt

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

flatMap för sekventiella förfrågningar

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

Kombinera flera förfrågningar

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

Snabb kontroll

Vilken Combine-operator avkodar publisherns utdata till en Decodable-typ?

Sammanfattning

Viktiga punkter: • `dataTaskPublisher(for:)` – URL-hämtning baserad på Combine • `.map(\.data)` → `.decode(type:decoder:)` för JSON • `.tryMap` validerar HTTP-status • `.retry(n)` för automatiska nya försök • `.catch { }` tillhandahåller en reserv-publisher Kursen är klar! Nästa: Strukturerad samtidighet i Swift.
Gratis att börja

Lär dig Swift med en AI-lärare – gratis

Skriv och kör riktig kod i webbläsaren, få omedelbar hjälp av en AI-lärare dygnet runt och fortsätt där du slutade – på webben eller i appen.

Kurser
122
Lektioner
409

Vanliga frågor

Är lektionen ”Nätverk med Combine och URLSession” gratis?

Ja – du kan läsa vilka 3 lektioner som helst i lärvägen Swift Academy, inklusive ”Nätverk med Combine och URLSession”, kostnadsfritt i sin helhet här på webben. Därefter låser CoddyKit PRO upp alla lektioner, plus interaktiv övning med en inbyggd kodredigerare och en AI-lärare dygnet runt. Kursen i Swift Academy innehåller totalt 4 lektioner.

Vad lär jag mig i ”Nätverk med Combine och URLSession”?

Använd URLSession.dataTaskPublisher med Combine för att hantera nätverkssvar. Ni övar på Swift Academy med praktisk kod som körs direkt i webbläsaren, medan en AI-handledare som är tillgänglig dygnet runt svarar på Era frågor under lektionen.

Behöver jag någon erfarenhet för att börja lära mig Swift Academy?

Du behöver inga förkunskaper. Utbildningen i Swift Academy på CoddyKit är upplagd för allt från nybörjare till avancerade elever, så att du kan börja här eller från början och gå fram i din egen takt. Detta är lektion 4 av 4.

Hur lång tid tar lektionen ”Nätverk med Combine och URLSession”?

De flesta CoddyKit-lektioner tar cirka 5–10 minuter. Varje lektion är kort och interaktiv, så att du gör stadiga framsteg och kan fortsätta precis där du slutade – på webben eller i appen.

Kan jag skriva och köra kod i den här Swift Academy-lektionen?

Ja. Varje Swift Academy-lektion innehåller en inbyggd kodredigerare, så att du kan skriva och köra riktig kod direkt i webbläsaren och få omedelbar AI-feedback – utan lokal installation.

Alla lektioner i den här kursen

  1. Publishers och subscribers
  2. Operatorer: map, filter, combineLatest
  3. PassthroughSubject och CurrentValueSubject
  4. Nätverk med Combine och URLSession
← Tillbaka till Swift Academy