错误是:无法转换类型(字符串:Int)的值?指定类型“String”。
显然我的字典“roster”是“String: Int”,函数“printRoster”内的局部变量(“lastPlayer”和“firstPlayer”)是“String”。但我尝试了所有的变体,但没有运气。在我将名册制作为字典之前,它工作得很好,而且它只是一个字符串。
它应该做什么:函数连接一个字符串,使其具有正确的标点符号。第一个字符串是“名册包括”,然后我们添加位于字典“名册”的键中的每个球员。但名册中的第一个键没有逗号,最后一个键有一个“, and”。
另外,我可以将字典“roster”添加到协议(protocol)中吗,在任何 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
最佳答案
这个怎么样:
let roster = ["Stephen Curry":1, "Andrew Bogu": 2, "Klay Thompson":3]
let players = roster.keys.joined(separator: ", ")
let all = "Roster contains: \(players)."
关于Swift:for 循环、搜索字典、从键设置变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37901766/