2012-12-10 8 views
5

Ich wollte meine Ressourcen, NIB-Dateien und Lokalisierungsdateien in ein gemeinsames wiederverwendbares Bundle unterteilen. Und so habe ich ein Paket für meine ios-Anwendung erstellt und die angegebenen Ressourcen in das Paket aufgenommen, indem ich Build-Phasen nutze und Bundle-Ressourcen kopiere. Aber jetzt, wenn ich versuche, das Bündel zu laden, kann ich das Bündel nicht laden. Ich versuche, [NSBundle allBundles] zu verwenden, und das Array zeigt nur das Haupt-Apps-Paket an.Verwenden von NSBundle zum Laden meiner Ressourcen

Ich habe auch versucht, das Verzeichnis für NSApplicationPath aufzuzählen, aber das einzige verfügbare Paket ist wieder mein Standard-Paket. Ich wollte diese Technik lernen und nutzen, um meine Ressourcen zu trennen. Jede Hilfe und Vorschläge würden sehr geschätzt werden. Danke

Antwort

6
[NSBundle bundleWithPath:[NSString stringWithFormat:@"%@/%@", [[NSBundle mainBundle] bundlePath], pathToYourBundleWithinTheDotAppDirectory]; 

Lass mich wissen, wie es dir geht.

+1

Das Bündel wird nicht geladen. Es scheint so, als wäre das Bündel selbst im Hauptanwendungspaket enthalten. Also musste ich den Pfad zum Bundle mit [[NSBundle mainBundle] pathForResource: @ "MyBundle" ofType: @ "Bundle"] ermitteln und dann den Pfad verwenden, um das Bundle mit bundleWithPath zu laden: Methode – Sandeep

+0

Allerdings habe ich ein Bild hinzugefügt in das Bundle und versucht, das Bild mit PathForResource: ofType: Methode geladen, aber die Methode ist Null und dann habe ich in den Simulator-Anwendung Ordner und sah, dass das Bild nicht kopiert wird. – Sandeep

+1

Möglicherweise müssen Sie Ihrem Build eine Phase "Dateien kopieren" hinzufügen. – hd1

2

versuchen, etwas wie folgt aus:

NSBundle* bundle=[NSBundle bundleWithIdentifier: @"bundle name"]; 

Und stellen Sie sicher, dass Sie diese Optionen ausgewählt haben, wenn Sie das Bündel in das Projekt gezogen haben:

enter image description here

+0

Ich habe ein Paket erstellt, indem ich ein Ziel zu einer vorhandenen Anwendung hinzufüge. – Sandeep

1

Für Projekte mit einem Bündel, Ich benutze:

// in this example, we load test.png from the bundle 
NSString *pathToResource = [[NSBundle mainBundle] pathForResource:@"test" ofType:@"png"]; 

Was macht das s o Wenn Sie lokalisierte Dateien haben, bietet dies den Pfad zur Datei für das aktuelle Benutzergebietsschema. Dies ist praktisch, da sich lokalisierte Dateien nicht im Hauptverzeichnis befinden, sondern sich in ihren eigenen Unterordnern befinden (zum Beispiel befinden sich englische lokalisierte Dateien im Unterordner @ "en.lproj") und sie nach Namen zu benennen ist mühsam, weil Sie sie brauchen der vollständige Pfad Diese Methode erhält den Pfad für Sie.