Я недавно начал использовать 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
Программируем под IOS
-
Anonymous
1740053269
Anonymous
Я недавно начал использовать 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 }
}
}
Подробнее здесь: [url]https://stackoverflow.com/questions/79453870/dependency-injection-issue-in-tca-with-repository-resolution[/url]
Ответить
1 сообщение
• Страница 1 из 1
Перейти
- Кемерово-IT
- ↳ Javascript
- ↳ C#
- ↳ JAVA
- ↳ Elasticsearch aggregation
- ↳ Python
- ↳ Php
- ↳ Android
- ↳ Html
- ↳ Jquery
- ↳ C++
- ↳ IOS
- ↳ CSS
- ↳ Excel
- ↳ Linux
- ↳ Apache
- ↳ MySql
- Детский мир
- Для души
- ↳ Музыкальные инструменты даром
- ↳ Печатная продукция даром
- Внешняя красота и здоровье
- ↳ Одежда и обувь для взрослых даром
- ↳ Товары для здоровья
- ↳ Физкультура и спорт
- Техника - даром!
- ↳ Автомобилистам
- ↳ Компьютерная техника
- ↳ Плиты: газовые и электрические
- ↳ Холодильники
- ↳ Стиральные машины
- ↳ Телевизоры
- ↳ Телефоны, смартфоны, плашеты
- ↳ Швейные машинки
- ↳ Прочая электроника и техника
- ↳ Фототехника
- Ремонт и интерьер
- ↳ Стройматериалы, инструмент
- ↳ Мебель и предметы интерьера даром
- ↳ Cантехника
- Другие темы
- ↳ Разное даром
- ↳ Давай меняться!
- ↳ Отдам\возьму за копеечку
- ↳ Работа и подработка в Кемерове
- ↳ Давай с тобой поговорим...
Мобильная версия