In meinem Fall habe ich 50 Ordner, in denen jeder Unterordner und Bilder hat. Ich könnte sie in das Apps-Hauptpaket ziehen, aber es gibt viele doppelte Dateinamen, und es wäre praktischer, auf diese auf strukturierte Weise zuzugreifen.Was ist der beste Weg, um ein Dataset mit 50 Ordnern zu einer iOS App hinzuzufügen?
0
A
Antwort
1
Ihre Formulierung "es wäre praktischer, sie in der strukturierten Weise zugreifen" scheint darauf hinzuweisen, dass Sie denken, dass der Resources
Ordner einen Ordnerbaum von Dateien nicht enthalten kann, kann es. Wenn Sie jedoch Xcode selbst Ihre Ressourcendateien in das Bundle kopieren lassen, wird der Baum flachgelegt, ohne dass die Option beibehalten werden muss (aus unbekannten Gründen). Um dies zu beheben, können Sie die Dateien mithilfe eines Build-Skripts in das Paket kopieren.
Kurz umrissen, müssen Sie die Lücken mit etwas zu lesen füllen:
- zuerst Ihre Dateien und Ordner in Ihrem Projekt hinzufügen. Verwenden Sie eine Gruppe pro Ordner, in Xcode 9 Erstellen einer Gruppe erstellt einen entsprechenden Ordner im Projektverzeichnis, aber in früheren Versionen müssen Sie die Gruppe erstellen und dann einen Ordner zuordnen - überprüfen Sie die Dokumentation der von Ihnen verwendeten Xcode-Version.
- Markieren Sie alle auf diese Weise hinzugefügten Ordner und Dateien als nicht als Teil Ihres Build-Ziels. Dadurch wird verhindert, dass Xcode die Dateien automatisch in das Bundle kopiert und dabei die Ordnerstruktur abflacht.
- Wechseln Sie nun in den Zieleinstellungen zur Registerkarte "Build Phases" und fügen Sie eine neue Build-Skript-Phase hinzu. Fügen Sie ein Shell-Skript hinzu, das etwa
ditto
verwendet, um den Ordnerbaum in das Paket zu kopieren. Es werden verschiedene Umgebungsvariablen gesetzt, die auf das Projekt und das Bundle verweisen, Ihre Xcode-Dokumentation überprüfen oder einfach ein Dummy-Skript ausführen und ausgeben (dies ist eine Option oder verwenden Sieprintenv
). Sie können diese Umgebungsvariablen verwenden, um die Quelle und das Ziel für Ihre Kopie zu bestimmen. - In Ihrer App selbst können Sie den Stammordner Ihres Baums mithilfe von Standard-Bundle-Methoden lokalisieren. Von dort aus können Sie die Methode verwenden, die Sie wählen, um darin Elemente zu referenzieren, genauso wie Sie es tun würden, wenn der Ordnerbaum nicht innerhalb des Pakets wäre.
HTH
Verwandte Themen
- 1. Was ist der beste Weg, um ein Modell zu einer App in der Produktion hinzuzufügen
- 2. Was ist der beste Weg, um ein intelligentes Banner zu einer Ionic2-Anwendung hinzuzufügen?
- 3. Was ist der beste Weg ein Zeitintervall in PHP hinzuzufügen?
- 4. Was ist der beste Weg, Methoden zu Apollo-Datenobjekten hinzuzufügen?
- 5. Was ist der beste Weg, um mit OSGI zu beginnen?
- 6. Was ist der beste Weg, um ein Formularlayout zu entwerfen
- 7. Was ist der beste Weg, um ein Delphi-Set in einem Dataset zu speichern?
- 8. Was ist der beste Weg, zwei Matrizen mit Überladung hinzuzufügen?
- 9. Was ist der beste Weg, um ein Verzeichnis zu leeren?
- 10. Was ist der beste Weg, um sklearn Modell zu speichern?
- 11. Was ist der beste Weg, einen URL-Parameter hinzuzufügen, um Ansichten mit Zend Framework zu wechseln?
- 12. Was ist der beste Weg, um eine Animation zu fahren?
- 13. Was ist der beste Weg, um eine GUI-Anwendung zu einer Pygame-Anwendung hinzuzufügen?
- 14. Was ist der beste Weg, um eine perfekte Hash-Funktion für eine iOS-App zu implementieren?
- 15. Was ist der beste Weg, um eine Pylons-App bereitzustellen?
- 16. Was ist der beste Weg, um einen Standard-Admin-Benutzer in Node.js/MongoDB App hinzuzufügen?
- 17. Was ist der beste Weg, um ein Chat-Steuerelement mit Python wxWidgets hinzuzufügen? (wxpython)
- 18. Was ist der richtige Weg, Elemente zu einer CSR_Matrix hinzuzufügen?
- 19. Was ist der beste Weg, um Daten wie "Favoriten" in einer Android-App zu speichern?
- 20. Was ist der beste Weg, um eine UWP-App mit einer entfernten Datenbank zu verbinden?
- 21. Was ist der beste Weg, um mit NHibernate zu beginnen?
- 22. Was ist der beste Weg, um eine Enumeration zu erhöhen?
- 23. Was ist der beste Weg, um mehrere Suchoptionen zu behandeln?
- 24. Was wäre der beste Weg Datenhaken zu Tabellenzeilendaten hinzuzufügen?
- 25. Was ist der beste Weg, um ein Zählerfeld in MySQL
- 26. Was ist der beste Weg zu
- 27. Was ist der beste Weg, um dieses Programm zu wiederholen?
- 28. Was ist der beste Weg, um einen ByteArrayOutputStream zu schließen?
- 29. Was ist der beste Weg, um ein numpy Array downsampling?
- 30. Der beste Weg, um neue CSS-Regeln mit jquery hinzuzufügen?
Vielen Dank für diese ausführliche Antwort. Ich habe das schon ohne den Script-Trick versucht. Mein Ziel ist es, den NSFileManager zu verwenden, nachdem ich den Bundle-Pfad durchsucht habe, um ihn zu durchlaufen, wie ich es auf MacOS tun würde. Ich werde versuchen, das Skript zu schreiben, aber es fühlt sich nicht richtig an, es auf eine komplizierte Art und Weise zu tun (dachte, es wäre einfach). Wahrscheinlich ist es wegen iOS-Sandboxing eingeschränkt/nicht allgemein implementiert? – matthiaswitt
@matthiaswitt - Es bezieht sich nicht auf Sandboxing. Aus unbekannten Gründen flacht die Standardkopie von Xcode-Elementen in einem Bundle jeden Ordnerbaum ab, ohne dass eine Option zum Speichern vorhanden ist. Die Leute haben es seit Jahren als Problem angesprochen. Eine Gruppe betrifft Bibliotheks-/Framework-Schreiber, die die enthaltenen Header-Dateien strukturieren möchten, wie es Apple selbst tun könnte. Allerdings ist es mit einem kurzen Build-Skript adressierbar, das nicht wirklich "kompliziert" ist, und wir können nur vermuten, dass dies Apples Grund ist, es nicht zu bauen. – CRD