nalexn / clean-architecture-swiftui

SwiftUI sample app using Clean Architecture. Examples of working with CoreData persistence, networking, dependency injection, unit testing, and more.
MIT License
5.56k stars 671 forks source link

How to get value from LoadableSubject? #73

Closed riley-usagi closed 2 years ago

riley-usagi commented 2 years ago

On the interactor method i always get value nil from received LoadableSubject parameter.

nalexn commented 2 years ago

Given the code for LoadableSubject

typealias LoadableSubject<Value> = Binding<Loadable<Value>>

enum Loadable<T> {

    case notRequested
    case isLoading(last: T?, cancelBag: CancelBag)
    case loaded(T)
    case failed(Error)

    var value: T? {
        switch self {
        case let .loaded(value): return value
        case let .isLoading(last, _): return last
        default: return nil
        }
    }
}

You're getting nil because the underlying value container doesn't end up in loaded state. Only debugging your project can help understand where the error is.