2016-05-31 12 views
0

Ich habe den folgenden Code:Objekt Initialisation in Swift

var myBundle:NSBundle 
myBundle = NSBundle.mainBundle() // what is the role of this line ?? 

if let path = myBundle.pathForResource("CellDescriptor", ofType: "plist"){ 

    var cellDescriptors: NSMutableArray! 
    cellDescriptors = NSMutableArray(contentsOfFile: path) 
} 

Warum ich diese Zeile Code bin mit myBundle = NSBundle.mainBundle()? Ich lese, dass es myBundle Objekt initialisiert. Aber was genau bedeutet das?

Warum kann ich nicht pathForResource Funktion ohne Initialisierung myBundle Objekt aufrufen?

Vielen Dank.

+0

Siehe: http://stackoverflow.com/questions/3369136/what-is-nsbundle-and-mainbundle-in-objective-c –

Antwort

2

die über dieser Linie Schritt für Schritt Lassen Sie denken:

myBundle = NSBundle.mainBundle() 

Sie deklarierte Variable myBundle mit Typ NSBundle. Jetzt müssen Sie diese Variable mit dem richtigen Instanzobjekt initialisieren. Sie können zum Beispiel Konstruktor verwenden. Aber für einige Klassen haben Sie einen statischen Konstruktor. Wenn Sie die Variable nicht auf das richtige Objekt setzen - es hat standardmäßig keinen Wert, so dass Sie nicht auf die Instanzmethode zugreifen können.

NSBundle.mainBundle() 

- hier ist der Aufruf von main Methode der NSBundle Klasse (statische Methode), die Ihnen die richtige Instanz zurückgibt (für diesen Fall - es ist Hauptbündel Ihrer Anwendung aus der Dokumentation:

. Das NSBundle-Objekt, das dem Bündelverzeichnis entspricht, enthält die aktuelle ausführbare Datei Diese Methode kann auch für entbündelte Anwendungen ein gültiges Bündelobjekt zurückgeben und auch null zurückgeben, wenn das Objekt nicht erstellt werden konnte. Überprüfen Sie daher immer den Rückgabewert

Hoffe das hilft.

+0

Danke @Doro. Können Sie bitte sagen, was "myBundle" initialisiert werden soll, d. H. Was versuchen wir eigentlich, es zu initialisieren? Bitte ertragen Sie mit mir, wie ich ein Anfänger bin. –

+0

https://developer.apple.com/library/mac/documentation/Cocoa/Reference/Foundation/Classes/NSBundle_Class/ Die NSBundle-Klasse verfügt über viele Methoden zum Erstellen von Bundle-Objekten. Am häufigsten wird jedoch mainBundle verwendet Methode. Das Hauptpaket stellt das Bündelverzeichnis dar, das den aktuell ausgeführten Code enthält. Bei einer App erhalten Sie mit dem Hauptbündelobjekt Zugriff auf die Ressourcen, die mit Ihrer App geliefert wurden. –

+0

Warum runter? Was stimmt nicht mit meiner Antwort? – Doro

Verwandte Themen