compiler-errors - 对被覆盖属性给出的错误使用不明确

标签 compiler-errors swift

我在 Playground 中定义了一个子类和一个父类(super class),它们代表 Swift 中的 Card 和 PlayingCard。

Card 中有一个带有 getter 的计算属性,称为 desc。我已经在子类中重写了它,以便根据仅在子类中定义的其他两个属性来计算它。

这一切在 Playground 上运行良好,并按预期打印出“Ace Spades”。

import Cocoa

class Card {
    var desc: String {
    get { return "Default description." }
    }
}

class PlayingCard: Card {
    var suit: String
    var rank: String
    override var desc: String {
    get { return rank + " " + suit }
    }
    init(suit: String, rank: String) {
        self.suit = suit
        self.rank = rank
        super.init()
    }
}

let baseCard = PlayingCard(suit: "Spades", rank: "Ace")
var desc: String
desc = baseCard.desc
println (desc)

然后我尝试实例化同一张扑克牌并访问 desc 变量,但在 ViewController 中如下所示:

import UIKit

class ViewController: UIViewController {

    @IBAction func touchCardButton(sender : UIButton)
    {
        let baseCard = PlayingCard(suit: "Spades", rank: "Ace")
        var desc: String
        desc = baseCard.desc
    }

}

但是,这会导致以下错误: “desc”的使用不明确

更新:当我在问题导航器中展开错误时,它指向它发现不明确的两个候选者:

  • 在 Card 类中 - var desc: String {
  • 在 PlayingCard 类中 - 覆盖 var desc: String {

帮助文档中似乎没有任何内容表明我做错了什么,而且我在网上找不到任何对该错误的引用。

有什么想法吗?

编辑:我已经删除了 setter,并使 getter 纯粹是一个计算属性,遵循下面关于计算属性的滥用的评论/答案。但是,现在正确使用它作为计算属性,我仍然收到 Ambigously use of 'desc' 错误。

最佳答案

关于compiler-errors - 对被覆盖属性给出的错误使用不明确,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24084457/

相关文章:

ios - 滚动时保持 UITableViewCell 可见? ( swift 3)

ios - Swift 中的解析和 GMaps iOS SDK 不兼容?

android-studio - 编译错误: "-Xcoroutines has no effect: coroutines are enabled anyway in 1.3 and beyond"

c++ - 如何使用 C++ 驱动程序重新连接到 MongoDB?

c++ - Visual Studio找不到cl.exe

iOS Swift : Initializer for conditional binding must have Optional type, 不是 '() -> 字符串?

compiler-errors - 在Android Studio中编译Cocos 2d-x-3.15.1项目时发生错误

android - 无法使用Lombok插件安装APK

swift - 遍历字典并检查每个值类型

ios - 当 UIViewController 在启动期间设置为 UIWindow 的根时,不会调用 viewWillAppear 和后续生命周期事件