, так что у меня в руках довольно сложный сценарий, он выглядит примерно так:
- Массив выборки "репозиторных" сущностей
- Анализ массива репозитория
- Для каждой сущности репозитория необходимо выбрать ветви
- После того, как ветви были выбраны, измените исходные репозитории, прикрепив соответствующие ветви к каждому
- Верните конечный объект со всеми их свойствами
Итак, код выглядит примерно так:
func fetchRepos(token: Token) -> Promise<[Repo]> {
return Promise { seal in
guard let url = URL([SOME_URL])...
var request = URLRequest(url: url)
request.addValue(token.token, forHTTPHeaderField: "X-API-Token")
request.addValue("application/json", forHTTPHeaderField: "accept")
URLSession.shared.dataTask(with: request) { (data, _, error) in
if error == nil {
do {
let reposDto = try self.decoder.decode([RepoDto].self, from: data!)
var repos = reposDto.map { dto in DtoMapper.mapRepoDto(dto, token: token) }
firstly {
when(resolved: repos.map { self.fetchRepoBranches(token: token, repo: $0) })
}.done { branchMatrix in
for (repo, result) in zip(repos, branchMatrix) {
var repo = repo
switch result {
case .fulfilled(let branches):
repo.branches = branches // THIS STEP IS NOT WORKING
repo.owner = "TEST" // ALSO DOES NOT WORK
print("inserting branches into repo", repo, branches)
case .rejected:
print("Repo branches could not be inserted \(repo.name)")
}
}
print("Repos have been fulfilled", repos)
seal.fulfill(repos)
}
} catch {
print("Error parsing Repos")
seal.reject(error)
}
} else {
seal.reject(error!)
}
}.resume()
}
}
Итак, весь код компилируется и запускается, но когда я пытаюсь назначить ветви, объект репо не видоизменяется, окончательная печать все еще печатает исходный массив объектов без каких-либо вставленных / обновленных свойств, что я здесь не так делаю?