non credo che questo è direttamente possibile a Swift 3 Ecco la soluzione migliore che potrei trovare:
class Child : Parent {
override public var file: PFFile? {
get { return nil }
set { }
}
func exampleFunction() {
print(super.PFFile?.description) // Use like this
print(PFFile?.description) // Don't do this
//This ^^^ will ALWAYS return nil for PFFile
}
}
Questa è una specie di trucco, ma fa quasi esattamente quello che vuoi. Non nasconde completamente la variabile dal mondo esterno, ma lo rende impotente. Quando provi ad accedere a file
ottieni sempre nil
, e quando provi ad assegnare un valore al file non fa nulla. Quindi il mondo esterno sa ancora che Child
ha una proprietà file
di tipo PFFile?
, ma non può fare nulla al riguardo.
In sostanza, file
è come una star del cinema attraente. Puoi inviare loro lettere, postare sulla loro bacheca di Facebook, commentare il loro feed di Instagram, ma non ti risponderanno mai. Sai chi sono e come sono, ma non puoi farci niente.
Poi, all'interno Child
si MUST uso super.file
OVUNQUE accesso Parent
s' file
proprietà. Se usi file
o self.file
, proverai a interagire con la versione impotente e non farai nulla e non otterrai nulla ogni volta! Ho incluso exampleFunction()
come esempio di questo utilizzo. (Ho creato la proprietà description
su PFFile
, supponiamo che sia un String
)
Rimozione del modificatore 'public'? – NeverHopeless
Purtroppo non posso modificare la classe genitore –