2016-05-05 12 views
0

Es ist wirklich einfach Weg Haupt Bundle für eine App abzurufen:iOS - Unterschiede über die Anwendungshauptbündelpfad

let path = NSBundle.mainBundle().bundlePath; 

Auf einem Gerät iOS 9, das Ergebnis vielleicht so etwas wie läuft:

/var/Behälter/Bundle/Anwendung/52E76B99-BF75-4E99-82BB-51307695E694/AppName.app

Das Ergebnis zeigt, dass über Xcode installierte Anwendung untergespeichert istauf iOS 9.

Aber in einigen anderen Geräten, ist das Hauptbündel Pfad so etwas wie:

/private/var/mobile/Behälter/Bundle/Anwendung/0E6DD32F-4E6F-4E54-B47E- A91060097E16/myapp.app

Das ist komisch. Diese zwei Wege unterscheiden sich sehr. Ich frage mich, was diese Unterschiede hervorbringen könnte?

Antwort

0

Sie sollten den Pfad niemals verwenden, wenn Sie ihn zur späteren Verwendung oder zum Vergleich speichern. Da es sich immer ändert und die Laufzeit von iOS generiert wird, aber seine iOS-Verantwortung, um den richtigen Pfad zu erhalten, wenn Sie nach dem Bundle-Pfad fragen. Man sollte also immer einen Pfad verwenden, der zur Laufzeit erstellt wird.

Good to read.

+0

Sie haben Recht. Aber das Problem ist, selbst wenn sich der Hauptbündelpfad geändert hat, teilen sie sich das übergeordnete Verzeichnis (wie '/ var/containers/Bundle/Application'). Während in meinem Fall, diese Pfade völlig anders sind (man beginnt mit '/ private', ein anderes passt nicht). – kukushi

+0

Wenn der Pfad in Gerät und Simulator überprüft wird, hat dies den Unterschied. Nicht sicher warum. Aber iOS hat entschieden. – Hemang