ios - Swift 中缺少参数错误的参数

标签 ios swift

我正在探索 Swift 并尝试编写一个函数来比较两个 Rank 值,方法是比较它们的原始值。但我收到错误消息:在调用 card().compareValue(card.Ace, card.King) 时缺少参数 'rawValue' 的参数

有什么想法吗?

enum card : Int {
    case Ace = 1
    case Two, Three, Four, Five, Six, Seven, Eight, Nine, Ten
    case King, Queen, Jack

    func cardValue() -> String {
        switch self {
        case .Ace:
            return "Ace"

        case .King:
            return "King"

        case .Queen:
            return "Queen"

        case .Jack:
            return "Jack"

        default:
            return String(self.rawValue)
        }
    }

    func compareValue(val1: card, val2: card) -> String {
        if val1.rawValue > val2.rawValue {
            return "\(val1) is greater than \(val2)"
        } else {
            return "\(val1) is not greater than \(val2)"
        }
    }
}

card().compareValue(card.Ace, card.King) // error

最佳答案

问题出在 card() 对象的构造中,调用的目标:

card(). // and so on

您正在尝试构造一个 enum 而不指定其原始值。您可以通过提供它来修复它,就像这样

card(rawValue:0). // <<=== This is not a good fix!

但这不是一个好的解决办法。相反,您应该将 compareValue 设为 static 或独立函数:

static func compareValue(val1: card, _ val2: card) -> String
//                                   ^
... // Note the underscore ----------+
card.compareValue(card.Ace, card.King) // Works

关于ios - Swift 中缺少参数错误的参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37843306/

相关文章:

ios - 使用 TopLayoutGuide 的制图约束

javascript - 将 php 重定向到 youtube 应用 ios

objective-c - 什么是 kCFErrorDomainCFNetwork?

ios - 使用 Codable 解码具有多个 key 的 JSON

swift - 在 Swift 中,Objective-C 类的属性是否有可能满足 Swift @obj 协议(protocol)计算属性要求?

ios - 未为所有部分调用 cellForRowAtIndexPath

ios - Xcode 6.1 if/else/for/switch 语句不自动完成(仅限 Swift)

ios - Swift:使用协议(protocol)进行典型化?

iOS - 不同 Storyboard中的容器组件

Swift collectionView 单元格未显示