【发布时间】:2015-11-05 17:17:12
【问题描述】:
使用 GameKit 多人游戏功能 (EasyGameCenter) 可在此处找到:https://github.com/DaRkD0G/Easy-Game-Center-Swift
当两个玩家连接时,我在这条线上遇到了崩溃
let playerIDs = match.players.map { $0 .playerID } as! [String]
在控制台中使用这个
致命错误:不能在不同大小的类型之间使用 unsafeBitCast
有什么想法吗?以下是完整功能,方便参考:
@available(iOS 8.0, *)
private func lookupPlayers() {
guard let match = EGC.sharedInstance.match else {
EGC.printLogEGC("No Match")
return
}
let playerIDs = match.players.map { $0 .playerID } as! [String]
/* Load an array of player */
GKPlayer.loadPlayersForIdentifiers(playerIDs) {
(players, error) in
guard error == nil else {
EGC.printLogEGC("Error retrieving player info: \(error!.localizedDescription)")
EGC.disconnectMatch()
return
}
guard let players = players else {
EGC.printLogEGC("Error retrieving players; returned nil")
return
}
if EGC.debugMode {
for player in players {
EGC.printLogEGC("Found player: \(player.alias)")
}
}
if let arrayPlayers = players as [GKPlayer]? { self.playersInMatch = Set(arrayPlayers) }
GKMatchmaker.sharedMatchmaker().finishMatchmakingForMatch(match)
(Static.delegate as? EGCDelegate)?.EGCMatchStarted?()
}
}
【问题讨论】:
-
如果你把那行分成两行怎么办。将映射的值存储到一行的临时变量中,然后在下一行将其转换为
[String]。你还看到同样的问题吗? -
不知道该怎么做,新来的 swift。此代码来自 EasyGameCenter github
-
let tempPlayerIDs = match.players.map { $0 .playerID }后跟let playerIDs = tempPlayerIDs as! [String] -
不幸的是,仍然发生,现在在 let playerIDs 行。
-
看起来 playerID 是一个字符串?类型,如果你把
match.players.map { $0.playerID }改成match.players.map { $0.playerID! }
标签: swift game-center gamekit