2015-08-06 5 views
9

Questo è come è definito in Objective-C:Come sovrascrivere la proprietà di sola lettura da Objective-C in Swift?

@interface AFHTTPRequestOperation : AFURLConnectionOperation 

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

come assegnare qc a questa proprietà?

Mi piacerebbe prendere in giro questa proprietà per un utilizzo successivo. Quindi ho bisogno di sostituire il mio responseObject in Swift. Qualche idea su come fare questo? Posso sottoclasse, estendere o qualsiasi altra cosa. L'unica cosa è che deve per tipo di AFHTTPRequestOperation.

class MyRequestOperation: AFHTTPRequestOperation { 

    override var responseObject: [String: AnyObject] 
} 

produce un errore:

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

+0

'esclusione lasciare responseObject = ...'? –

+0

quindi provare senza la parte di inizializzazione: [collegamento] (https://stackoverflow.com/questions/25005259/objective-c-setter-overriding-in-swift) –

+0

Cosa intendi? –

risposta

5

è possibile presentare una sola lettura proprietà ereditata come una proprietà di lettura-scrittura, fornendo sia un getter e setter nella vostra proprietà sottoclasse override.but tuttavia non è possibile fornire una proprietà di lettura/scrittura ereditata come proprietà di sola lettura. per chiarire meglio riferiscono https://developer.apple.com/library/ios/documentation/Swift/Conceptual/Swift_Programming_Language/Inheritance.html#//apple_ref/doc/uid/TP40014097-CH17-XID_300

+0

sei genio :-) –

10

Quindi, la risposta è semplice come @Atul Mishra ha detto:

class MyRequestOperation: AFHTTPRequestOperation { 

    var myOverridenResponseObject: AnyObject? 

    override var responseObject: AnyObject? { 

     get { 
      return myOverridenResponseObject 
     } 

     set { 
      myOverridenResponseObject = newValue 
     } 
    } 
} 
Problemi correlati