2015-06-21 6 views
6

पर एनएसओब्जेक्ट में वर्णन विधि ओवरराइड करना मुझे एक एक्सप्लोरर त्रुटि मिल रही है जब मैं अपने एक्सकोड प्रोजेक्ट में एक ऑब्जेक्ट बनाने की कोशिश करता हूं। इस कोड है:स्विफ्ट

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 

मैं मुद्दों के बिना इस समारोह ओवरराइड करने के लिए क्या करने की जरूरत?

+0

आप इसे NSObject के उपवर्ग होने की जरूरत है? यदि आपको इसकी आवश्यकता नहीं है तो आपको ओवरराइडिंग विवरण के साथ समस्या नहीं होगी। – Arbitur

+0

हां, मुझे चाहिए, उदाहरण है – jgd

+0

http://swiftstub.com/803133613/ यह पूरी तरह से काम करता है ... – Arbitur

उत्तर

12
  • descriptionNSObjectProtocol की एक (गणना) संपत्ति है, विधि नहीं।
  • इसका स्विफ्ट दृश्य 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 
+1

इस कोड के साथ, मुझे संकलन समय में निम्न समस्या मिलती है: सबसे पहले, किसी पंक्ति पर अभिसरण घोषणाओं को ';' से अलग किया जाना चाहिए। हल किया गया, मुझे "संग्रहीत संपत्ति विवरण के साथ ओवरराइड नहीं किया जा सकता"। – jgd

+0

@jgd: आप किस एक्सकोड संस्करण का उपयोग कर रहे हैं? मैंने एक्सकोड 6.3.2 के साथ कोड का परीक्षण किया है और यह अपेक्षित के रूप में काम करता है। –

+0

वही एक्सकोड 6.3.2 – jgd