Combine est un framework qui permet de gérer des événements asynchrones. Il est basé sur le pattern Observer.
Il est particulièrement utile pour gérer des appels réseau, des animations, des gestes, etc. En mode réactif. Il fonctionne très bien avec SwiftUI.
https://gist.github.com/staltz/868e7e9bc2a7b8c1f754
async/await dans votre application par des appels réseaux utilisant Combine.Getting started with Combine : https://www.avanderlee.com/swift/combine/ Un tutoriel plus complet sur Combine : https://www.kodeco.com/books/combine-asynchronous-programming-with-swift/v2.0/chapters/1-hello-combine
Voici un exemple d’appel réseau avec Combine
import Combine
import Foundation
struct User: Codable {
let id: Int
let name: String
}
enum APIError: Error {
case invalidURL
case invalidResponse
case decodingError
}
class API {
static let shared = API()
private let baseURL = URL(string: "https://jsonplaceholder.typicode.com")!
func getUsers() -> AnyPublisher<[User], Error> {
URLSession
.shared
.dataTaskPublisher(for: baseURL.appendingPathComponent("/users"))
.map(\.data)
.decode(type: [User].self, decoder: JSONDecoder())
.eraseToAnyPublisher()
}
}
func loadData {
API
.shared
.getUsers()
.assign(to: \.users, on: self)
.store(in: &cancellables)
}
Utilisez Combine au lieu de async/await pour charger les données de votre application sur au moins 1 requête.
cancelables et de les annuler lorsque la vue est supprimée..assign(to: \.homeFeed, on: self) plutôt qu’un .sink sur votre FeedState.Utilisez Combine pour faire en sorte que le Feed charge les 12 prochaines images lorsque l’utilisateur arrive à la fin du ScrollView.