Swift 无法转换类型为';承诺<;[NSDictionary]>';到预期的参数类型';担保<;无效>';

Swift 无法转换类型为';承诺<;[NSDictionary]>';到预期的参数类型';担保<;无效>';,swift,swift4,promisekit,Swift,Swift4,Promisekit,目前,当我将我的承诺书从Swift 2更新为Swift 4时,我遇到了一些问题。我的很多承诺都是从NSDictionary返回此版本以保证无效。我不明白为什么会出现这个问题。如果有人能给我解释一下,我将不胜感激 func getPlayerGameLog(sportName: String) -> Promise<NSArray> { let team = (self as? PlayerWithPositionAndGame)?.team let positi

目前,当我将我的承诺书从Swift 2更新为Swift 4时,我遇到了一些问题。我的很多承诺都是从NSDictionary返回此版本以保证无效。我不明白为什么会出现这个问题。如果有人能给我解释一下,我将不胜感激

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 []
        }
    }
}
mlb/nfl/nba也是如此

该函数的用途非常简单。它只是将团队信息拉入函数并返回


“return when()”行出现错误首先,它是swift 4,您不应该使用
NS…
类型,现在有纯swift类型

下一件事,根据

  • 然后
    将输入上一个承诺值,并要求您返回一个承诺
  • done
    输入上一个承诺值并返回一个无效承诺(占链使用量的80%)
  • map
    被输入以前的承诺值,并要求您返回一个非承诺值,即一个值
几乎所有
然后
都应替换为
map


此外,您应该将
when
重写为
when(implemented:)
以返回
Promise
,而不是
Promise
,首先,它是swift 4,您不应该使用
NS…
类型,现在有纯swift类型

下一件事,根据

  • 然后
    将输入上一个承诺值,并要求您返回一个承诺
  • done
    输入上一个承诺值并返回一个无效承诺(占链使用量的80%)
  • map
    被输入以前的承诺值,并要求您返回一个非承诺值,即一个值
几乎所有
然后
都应替换为
map


此外,您应该将
when
重写为
when(implemented:)
以返回
承诺
,而不是
保证

出现此错误的位置?添加编辑后,错误显示在第5行、第14行和第23行参见我的答案。应该有帮助。这个错误出现在哪里?添加了编辑,错误出现在第5行、第14行和第23行查看我的答案。应该有帮助。
static let mlbPlayerGameLogs = MultiCache { id in API.getMLBPlayerGameLogs(playerID: id) }