在swift上覆盖NSObject中的描述方法

Jua*_*cia 10 xcode swift

当我尝试在我的xcode项目中构建一个对象时,我收到一个编译器错误.这是代码:

import UIKit

class Rectangulo: NSObject {

    var ladoA : Int
    var ladoB : Int
    var area: Int {
        get {
            return ladoA*ladoB
        }
    }

    init (ladoA:Int,ladoB:Int) {

        self.ladoA = ladoA
        self.ladoB = ladoB
    }

    func description() -> NSString {
                return "El area es \(area)"
    }
}
Run Code Online (Sandbox Code Playgroud)

编译时的错误是:

Rectangulo.swift:26:10: Method 'description()' with Objective-C selector 'description' conflicts with getter for 'description' from superclass 'NSObject' with the same Objective-C selector
Run Code Online (Sandbox Code Playgroud)

我需要做什么来覆盖这个功能而没有问题?

Mar*_*n R 18

  • description是(计算的)属性NSObjectProtocol,而不是方法.
  • 它的Swift视图返回a String,而不是NSString.
  • 由于要覆盖超类的属性,因此必须override明确指定.

一起:

// main.swift:
import Foundation

class Rectangulo: NSObject {

    var ladoA : Int
    var ladoB : Int
    var area: Int {
        get {
            return ladoA*ladoB
        }
    }

    init (ladoA:Int,ladoB:Int) {

        self.ladoA = ladoA
        self.ladoB = ladoB
    }

    override var description : String {
        return "El area es \(area)"
    }
}

let r = Rectangulo(ladoA: 2, ladoB: 3)
print(r) // El area es 6
Run Code Online (Sandbox Code Playgroud)