Swift:for 循环、搜索字典、从键设置变量

标签 swift string dictionary

错误是:无法转换类型(字符串: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/

相关文章:

oop - 使用条目字段作为键的字典数据结构

ios - 调整图像选定区域的大小

ios - UITableViewController隐藏导航栏[搜索栏]

ios - 如何将(可选的)完成处理程序关闭传递给 Swift 中的 transitionFromViewController?

c++ - 标识符 [字符串值] 未定义

python - 将字典合并到数据框 get_dummies

arrays - 在 Swift 中读取 JSON 中的嵌套数组和元组

java - 寻找删除两侧空格的方法,将所有字母更改为小写,首字母为大写字母

c++ - 将字符串转换为 const* char

dictionary - 如何在 Go 中获取变量的内存大小?