Я недавно начал использовать TCA, и для инъекции зависимости я использовал библиотеку зависимостей. Что я сделал, так это то, что я создал репозиторий в слое данных, который соответствует репозиторитопротоколу, определенному в доменном слое, и в доменном слое у меня есть использование, где я использую @Dependendent (.Repository) для разрешения репозитория внутри Usecase. Общая структура кода выглядит следующим образом: < /p>
// Domain layer
public protocol RepositoryProtocol {
func getList(id: Int?) async -> Result
}
public class UseCase: UseCaseProtocol {
@Dependency(\.repository) public var repository
func getList(id: Int?) async -> Result
return await repository.getList(id: id, page: page, perPage: perPage)
}
}
// Data layer
public class Repository {
@Dependency(\.transformer) public var Transformer
@Dependency(\.errorTransformer) public var Transformer
@Dependency(\.service) public var service: ServiceProtocol
public init() {}
}
extension Repository: RepositoryProtocol {
public func getList(id: Int?) async -> Result {
do {
let (data, lastPage) = try await service.getList(id: Int?)
let entities = data.map { transformer.transform($0) }
return .success((data: entities, lastPage: lastPage))
} catch {
let networkingError = errorTransformer.transform(error)
return .failure(networkingError)
}
}
}
< /code>
Однако я сталкиваюсь с проблемой при попытке разрешить репозиторий в USECASE, и я получаю следующую ошибку:
не может вывести тип пути ключа из контекста; Рассмотрим явное указание типа корня. Мой вопрос: где мне зарегистрировать зависимости? Как и где я должен реализовать этот код, чтобы я мог использовать репозиторий в USECASE? < /P>
extension Repository: DependencyKey {
public static var liveValue: Repository {
Repository()
}
}
extension DependencyValues {
public var repository: RepositoryProtocol {
get { self[Repository.self] }
set { self[Repository.self] = newValue as! Repository }
}
}
Подробнее здесь: https://stackoverflow.com/questions/794 ... resolution
Проблема инъекции зависимости в TCA с разрешением репозитория ⇐ IOS
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение
-
-
Как связать с помощью BindingReducer подмножество дочернего состояния с помощью tca
Anonymous » » в форуме IOS - 0 Ответы
- 18 Просмотры
-
Последнее сообщение Anonymous
-