2015-06-17 9 views
10

Sono nuovo con Swift. Ho ereditato un progetto. L'ho visto girare su un dispositivo. Tuttavia, quando eseguo il checkout del codice e ha avuto molti errori. Sono stato in grado di cancellare gli errori. Tuttavia, mi imbatto in questo che mi sta sconcertando. Il progetto usa anche i file xib. Ecco il codice.Swift, super.init() Deve chiamare un inizializzatore designato dell'errore 'UIView' della superclasse

required init(coder aDecoder: NSCoder) { 
     super.init(coder: aDecoder) 
    } 

    override init(frame: CGRect) { 
     super.init(frame: frame) 
    } 

    init(items:NSArray, viewController:AnyObject){ 
     super.init() 
     //itemsArray = items 
     itemsArray = items as [AnyObject] 
     //commonInit(viewController as UIViewController) 
     commonInit(viewController as! UIViewController) 
    } 

ottengo l'errore sotto l'init (voci: NSArray, viewController: ANYOBJECT) Metodo/funzione. L'errore è puntato su "super.init()". Si dice "Deve chiamare un inizializzatore designato dell'errore" UIView "della superclasse"

Ho cercato, google, chiesto agli altri e non è successo niente. Posso ottenere aiuto per correggere questo errore, o almeno perché questo errore si verifica? Mi piacerebbe capire in modo da poter diventare uno sviluppatore software migliore.

Modifica: Vorrei ringraziare tutti per la loro intuizione e aiuto. Ho scoperto che il problema è più grande. Ho fatto le modifiche suggerite nel super.init (frame: CGRect). Ho dovuto cambiare anche una proprietà dell'array che stava influenzando la funzione init.

+3

prova a cambiare super.init() in self.init() – Andrea

+0

@Andrea ringrazia il mio amico –

risposta

3

Come suggerisce il messaggio di errore, è possibile chiamare solo l'inizializzatore designato della superclasse.

Per risolvere questo problema è necessario chiamare: super.init(frame: frame) invece di super.init()

8

UIView 's designati inizializzatori sono:

init(frame: CGRect) 
init(coder aDecoder: NSCoder) 

si sta chiamando super.init() che è un inizializzatore ereditato dalla sua superclasse NSObject. Usa invece uno di questi inizializzatori come suggerisce il compilatore.

+15

Questa risposta in realtà non fornisce più informazioni rispetto al messaggio di errore. – shieldstroy

+0

d'accordo con @shieldstroy – Confused

Problemi correlati