2.1.4.3 State Management in iOS

• SwiftUI + @StateObject / @ObservedObject for reactive UIs.

• UIKit + MVC (or MVVM) for legacy code or complex layouts.

• Example SwiftUI ViewModel:

// Features/Feeds/FeedsViewModel.swift
import SwiftUI

class FeedsViewModel: ObservableObject {
    @Published var posts: [Post] = []

    func loadPosts() {
        ApiService.shared.fetchPosts { [weak self] result in
            DispatchQueue.main.async {
                switch result {
                case .success(let posts):
                    self?.posts = posts
                case .failure(let error):
                    print("Error fetching posts: \(error)")
                }
            }
        }
    }
}

Last updated