Переопределяющий метод описания в NSObject на 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)"
    }
}

Ошибка во время компиляции:

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

Что мне нужно сделать, чтобы переопределить эту функцию без проблем?

10 голосов | спросил jgd 21 J0000006Europe/Moscow 2015, 20:11:44

1 ответ


0
  • description является (вычисляемым) свойством NSObjectProtocol, а не метод.
  • В представлении Swift возвращается 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
ответил Martin R 21 J0000006Europe/Moscow 2015, 20:16:00

Похожие вопросы

Популярные теги

security × 330linux × 316macos × 2827 × 268performance × 244command-line × 241sql-server × 235joomla-3.x × 222java × 189c++ × 186windows × 180cisco × 168bash × 158c# × 142gmail × 139arduino-uno × 139javascript × 134ssh × 133seo × 132mysql × 132