2010-12-15 6 views
5

Ich habe eine App, in der das App-Bundle eine Bilddatei enthält (ich meine, dass die Datei in XCode gezogen wird und in "Andere Quellen" erscheint), und ich verwende Code wie:iOS Objective-C Bild Dateiname/Pfad unterschiedliches Verhalten zwischen Simulator und Gerät

[[NSBundle mainBundle] pathForResource:@"Auto" ofType:@"jpg"] 

, um einen Pfad zu dem Bild zu erhalten.

Ich festgestellt, dass bei der Ausführung auf einem Gerät (iPod Touch) der Name Groß-und Kleinschreibung, so dass wenn die Datei ist "Auto" und ich verwende "AUTO", die zurückgegebene Pood ist "file: // (Null)". Wenn ich aber im Simulator "AUTO" verwende, funktioniert es genauso, als würde ich "Auto" verwenden.

Ich denke, dass die Tatsache, dass der Simulator einen so deutlichen Unterschied im Verhalten von dem Gerät hat, ein Fehler ist. Meinen die erfahreneren Benutzer da draußen, dass es ist, und dass ich es Apple melden sollte?

Danke.

+2

In der Tat. Geh zurück durch deine alten Fragen und akzeptiere einige Antworten. Niemand möchte helfen, wenn Sie undankbar werden. –

Antwort

0

Ich denke, dass die Tatsache, dass der Simulator einen so deutlichen Unterschied im Verhalten von dem Gerät hat, ein Fehler ist.

Im Allgemeinen deutet dies nicht unbedingt auf einen Fehler hin.

Müssen erfahrene Benutzer da draußen denken, dass es ist, und dass ich es an Apple melden sollte?

Ja. Aber der Fehler hat nichts mit dem Gerät zu tun. Der Fehler ist einfach "Simulator Dateipfade sind nicht Groß-und Kleinschreibung". Wenn Sie dies in einem "Sandbox" -Projekt reproduzieren können, tun Sie dies und senden Sie es zusammen mit Ihrem Fehlerbericht.

+0

Ich weiß, dass das, was ich gefunden habe, nicht bedeutet, dass es einen Fehler im Gerät gibt. Ich stimme Ihrer Aussage zu, was der Fehler ist. Ich werde versuchen, ein einfaches Projekt auf den Weg zu bringen und es zu melden. Es sollte nicht zu schwer sein. –

4

Das iOS-Dateisystem unterscheidet zwischen Groß- und Kleinschreibung, während das OSX-Dateisystem des Simulators nicht verwendet wird.

Da muss man sehr vorsichtig sein, ich habe mir damit mehr als einmal in den Fuß geschossen.

1

Das hat mehr mit NS/CFBundle selbst zu tun, als es mit dem zugrunde liegenden Dateisystem:

Direkt von Bundle Programming Guide: The Bundle Search Pattern:

Wichtigen: Das Bündel Schnittstellen Fall berücksichtigen, wenn für die Suche Ressourcendateien im Bündelverzeichnis. Diese Suche nach Groß- und Kleinschreibung erfolgt sogar auf Dateisystemen (z. B. HFS +), die bei Dateinamen keine Groß-/Kleinschreibung beachten.

Sie sollten immer und immer die Groß- und Kleinschreibung berücksichtigen. Nun, vielleicht ist eine bessere Art, das auszudrücken, zu sagen, niemals anzunehmen, dass die Groß-/Kleinschreibung nicht beachtet wird (was HFS + ist). In nicht allzu ferner Zukunft könnte Groß-/Kleinschreibung unter HFS + zum Standardformat für Mac OS X werden. (Im Allgemeinen wäre es gegenüber dem aktuellen Fall schützenden HFS + vorzuziehen, aber wenn Apple es jetzt wechseln würde, gäbe es wahrscheinlich sind es Hunderttausende von Apps, die aufgrund von Entwicklern brechen würden, die Vermutungen machten, die sie nicht haben sollten.Das iPhone ist ein klares Beispiel für die Präferenz für Groß-und Kleinschreibung HFS +. Ohne Legacy-Programme zu kümmern, war das iPhone schon immer Groß- und Kleinschreibung).

Sie bearbeiten gerade Ihre Code- und Ressourcennamen. Nehmen Sie sich also Zeit, um sicherzustellen, dass sie übereinstimmen.

+0

Ich habe Apple Bug Report 8903105 zu diesem Thema eingereicht, da es sich um einen Fehler im Simulator handelt. –

+0

Apples Antwort ist, dass, da der Simulator unter Mac OS läuft, dies das richtige Verhalten ist. Ich denke, es wäre schwierig, es zu korrigieren ... –

Verwandte Themen