【发布时间】:2016-06-18 21:23:52
【问题描述】:
错误是:无法转换类型(字符串:Int)的值?到指定类型“字符串”。
显然,我的字典 'roster' 是 'String: Int' 而函数 'printRoster' 中的局部变量('lastPlayer' 和 'firstPlayer')是 String。但是我已经尝试了所有变体,但没有运气。在我制作 roster 字典之前它工作得很好,它只是一个字符串。
它应该做什么:函数连接一个字符串,使其具有正确的标点符号。第一个字符串是“名册包括”,然后我们添加位于字典“名册”键中的每个玩家。但是花名册中的第一个键没有逗号,最后一个键有一个 ', and'。
另外,我可以将字典“名册”添加到协议中吗,在任何 Apple 手册中都没有看到语法
import UIKit
protocol basketballTeams {
var teamName: String? { get }
var numberOfPlayers: Int? { get }
var locatedIn: String? { get }
func printTeamLocation()
}
class BasketballTeam {
var teamName: String?
var numberOfPlayers: Int?
var locatedIn: String?
var roster = [String: Int]()
init(teamName: String) {
self.teamName = teamName
}
func printTeamLocation() -> String {
return "The \(teamName) are located in \(locatedIn)"
}
func printRoster() -> String {
var rosterPrint = "The roster includes"
for player in roster.keys {
rosterPrint += player
var firstPlayer: String = roster.first
var lastPlayer = roster.last
if (player == firstPlayer) {
rosterPrint += " \(player)"
}
else if (player == lastPlayer) {
rosterPrint += ", and \(player)."
}
else {
rosterPrint += ", \(player)"
}
}
return rosterPrint
}
}
enum NumberedPosition: Int {
case PointGuard = 1
case ShootingGuard, SmallForward, PowerForward, Center
func labelOfPosition() -> String {
switch self {
case .PointGuard:
return "Point Guard"
case .ShootingGuard:
return "Shooting Guard"
case .SmallForward:
return "Small Forward"
case .PowerForward:
return "Power Forward"
case .Center:
return "Center"
default:
"Position doesn't exit"
}
}
}
let goldenStateWarriors = BasketballTeam(teamName: "Golden State Warriors")
goldenStateWarriors.numberOfPlayers = 12
goldenStateWarriors.locatedIn = "Oakland, California"
goldenStateWarriors.roster = ["Stephen Curry" : 1, "Andrew Bogut" : 5, "Klay Thompson" : 2]
goldenStateWarriors.roster["Harrison Barnes"] = 3
【问题讨论】:
标签: swift string dictionary