Проблема инъекции зависимости в TCA с разрешением репозиторияIOS

Программируем под IOS
Ответить Пред. темаСлед. тема
Anonymous
 Проблема инъекции зависимости в TCA с разрешением репозитория

Сообщение 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 }
}
}


Подробнее здесь: https://stackoverflow.com/questions/794 ... resolution
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение
  • Проблема инъекции зависимости в TCA с разрешением репозитория
    Anonymous » » в форуме IOS
    0 Ответы
    6 Просмотры
    Последнее сообщение Anonymous
  • Круглая зависимость при инъекции репозитория JPA в реализацию
    Anonymous » » в форуме JAVA
    0 Ответы
    9 Просмотры
    Последнее сообщение Anonymous
  • Круглая зависимость при инъекции репозитория JPA в реализацию
    Anonymous » » в форуме JAVA
    0 Ответы
    12 Просмотры
    Последнее сообщение Anonymous
  • Как связать с помощью BindingReducer подмножество дочернего состояния с помощью tca
    Anonymous » » в форуме IOS
    0 Ответы
    18 Просмотры
    Последнее сообщение Anonymous
  • Возможен ли взрыв поля в массиве Typo3 TCA?
    Anonymous » » в форуме Php
    0 Ответы
    34 Просмотры
    Последнее сообщение Anonymous

Вернуться в «IOS»