2015-08-06 7 views
9

Jak to jest zdefiniowane w Objective-C:Jak przesłonić właściwość tylko do odczytu z Objective-C w Swift?

@interface AFHTTPRequestOperation : AFURLConnectionOperation 

@property (readonly, nonatomic, strong) id responseObject; 

Jak przypisać czegoś na ten obiekt?

Chciałbym wyśmiać tę właściwość do późniejszego wykorzystania. Więc potrzebuję tam własnego responseObject overriden w Swift. Wszelkie pomysły, jak to zrobić? Mogę podklasę, rozciągnąć lub cokolwiek innego. Jedyną rzeczą, jaką musi mieć, jest typ AFHTTPRequestOperation.

class MyRequestOperation: AFHTTPRequestOperation { 

    override var responseObject: [String: AnyObject] 
} 

Produkuje błąd:

Getter for responseObject with Objective-C selector responseObject conflicts with getter for responseObject from superclass AHTTPRequestOperation with the same Objective-C selector

+0

'przesłanianie niech responseObject = ...'? –

+0

następnie spróbuj bez części inicjalizacji: [link] (https://stackoverflow.com/questions/25005259/objective-c-setter-overriding-in-swift) –

+0

Co masz na myśli? –

Odpowiedz

5

Można przedstawić dziedziczone tylko do odczytu nieruchomości jako nieruchomości do odczytu i zapisu, zapewniając zarówno getter i setter w nieruchomości podklasy override.but jednak nie można zapewnić odziedziczonej właściwości zapisu i odczytu jako właściwości tylko do odczytu. dla lepszego wyjaśnienia odnoszą https://developer.apple.com/library/ios/documentation/Swift/Conceptual/Swift_Programming_Language/Inheritance.html#//apple_ref/doc/uid/TP40014097-CH17-XID_300

+0

jesteś geniuszem :-) –

10

Więc odpowiedź jest prosta jak @Atul Mishra powiedział:

class MyRequestOperation: AFHTTPRequestOperation { 

    var myOverridenResponseObject: AnyObject? 

    override var responseObject: AnyObject? { 

     get { 
      return myOverridenResponseObject 
     } 

     set { 
      myOverridenResponseObject = newValue 
     } 
    } 
} 
Powiązane problemy