В настоящее время у меня возникают проблемы, когда я обновляю свой PromiseKit со Swift 2 до Swift 4. Многие из моих обещаний возвращают эту проблему из NSDictionary в Guarantee Void. Я не понимаю, почему возникает эта проблема. Если бы кто-то мог мне это объяснить, это было бы очень признательно!
func getPlayerGameLog(sportName: String) -> Promise<NSArray> {
let team = (self as? PlayerWithPositionAndGame)?.team
let position = (self as? PlayerWithPositionAndGame)?.position
if sportName == "mlb" {
return when(Data.mlbPlayerGameLogs[id].get(), Data.sportsTeams[sportName].get()).then { (result, teams) -> NSArray in
if result.count == 0 {
return []
} else {
// Omitted Code
return gameStats
}
}
} else if sportName == "nfl" {
return when(Data.nflPlayerGameLogs[id].get(), Data.sportsTeams[sportName].get()).then { (result, teams) -> NSArray in
if result.count == 0 {
return []
} else {
// Omitted Code
return gameStats
}
}
} else {
return Data.nbaPlayerGameLogs[id].get().then { gameLogs in
return []
}
}
}
Теперь объявление игровых журналов выглядит следующим образом
static let mlbPlayerGameLogs = MultiCache { id in API.getMLBPlayerGameLogs(playerID: id) }
То же самое для mlb / nfl / nba.
Назначение функции довольно просто. Он просто вводит информацию о команде в функцию и возвращает ее.
Ошибки возникают в строках "return when ()"