• Apfeltalk ändert einen Teil seiner Allgemeinen Geschäftsbedingungen (AGB), das Löschen von Useraccounts betreffend.
    Näheres könnt Ihr hier nachlesen: AGB-Änderung
  • Wir haben den Frühjahrsputz beendet, Ihr auch? Welches Foto zu dem Thema hat Euch dann am Besten gefallen? Hier geht es lang zur Abstimmung --> Klick

Ordnerstruktur und Dateizugriff über relativen Pfad nach dem compilieren.

BenjiBenji

Alkmene
Registriert
11.03.09
Beiträge
32
Guten Abend,
schon wieder ein Problem, bei dem mir das Internet nicht weiterhelfen kann.

Ich habe einen Ordner "div", in dem liegen Textdateien.
Beim release/debug verschiebt der Compiler den so wie ich es haben will in die Ordnerstruktur innerhalb der .app .

Genauer gesagt hier hinein: blub.app/Contents/Resources/div/

Wie ich das verstehe, wird die Anwendung dann von hier ausgeführt: blub.app/Contents/Mac OS/blub

Nun sollte ich doch über die relative Pfadeingabe im code "../Resources/div" auf die Textdateien zugreifen können.

Die Dateien werden aber nicht gefunden. Irre ich mich, oder habe ich einen Fehler gemacht?

nächtlicher Gruß
Benji
 

hillepille

Melrose
Registriert
19.07.09
Beiträge
2.508
hi, so wie ich das sehe müsstest du 2 Ebenen hoch springen um dann in den Ressources-Zweig zu gelangen, also ../../Resources/div und besser ist wahrscheinlich ./../../Resources/div
 

BenjiBenji

Alkmene
Registriert
11.03.09
Beiträge
32
Vielen Dank, aber nach einigen Selbstversuchen bin ich dazu übergegangen dem Benutzer seine Ordnerstrukturen selbst verwalten zu lassen.
 

Poljpocket

Salvatico di Campascio
Registriert
07.01.07
Beiträge
432
Du kannst deine Textdateien ganz einfach auslesen (also die Pfade dazu erstmal bekommen):

Code:
NSArray *textFilePaths = [[NSBundle mainBundle] pathsForResourcesOfType:@"txt" inDirectory:@"div"];

Gruss ppocket
 

BenjiBenji

Alkmene
Registriert
11.03.09
Beiträge
32
Auslesen tue ich meine Textdateien anders, mir ging es ja nur darum, die absoluten Pfade zu bekommen, zum Beispiel davon, wo die app denn nun ausgeführt wird.

Aber die Dateiauswahl usw. passiert nun darüber, dass der Benutzer diesen angibt und dann bekomme ich ja einen absoluten Pfad.

Finde ich auch schöner, wenn der Benutzer für seine Dateien selbst verantwortlich ist und ich nicht vorschreibe die in einem Verzeichnis meiner Wahl zu sortieren.
 

Poljpocket

Salvatico di Campascio
Registriert
07.01.07
Beiträge
432
Die Daten direkt im Programm zu speichern ist sowieso keine gute Idee. Ein Programm-Bundle sollte nicht verändert werden. Dies widerspricht einer der heiligsten Design-Guidelines von Apple.

Zum Speichern von Daten, benutze /Library/Preferences für allgemeine Einstellungen, ~/Library/Preferences für benutzerspezifische Einstellungen, /Library/Application Support für sonstige allgemeinen Daten und ~/Library/Application Support für sonstige benutzerspezifische Daten. Es ist zu beachten, dass in Application Support keine Daten gespeichert sein sollten, ohne die das Programm nicht lauffähig wäre, die gehören nämlich direkt ins Bundle.

Gruss ppocket
 

Amin Negm-Awad

Süsser Pfaffenapfel
Registriert
01.03.07
Beiträge
665
Auslesen tue ich meine Textdateien anders, mir ging es ja nur darum, die absoluten Pfade zu bekommen, zum Beispiel davon, wo die app denn nun ausgeführt wird.

Aber die Dateiauswahl usw. passiert nun darüber, dass der Benutzer diesen angibt und dann bekomme ich ja einen absoluten Pfad.

Finde ich auch schöner, wenn der Benutzer für seine Dateien selbst verantwortlich ist und ich nicht vorschreibe die in einem Verzeichnis meiner Wahl zu sortieren.
Das ist nicht schöner, sondern fehlerhaft. Du darfst auch kein Interesse an einem absoluten Pfad haben, da dich das nichts angeht.
 

Amin Negm-Awad

Süsser Pfaffenapfel
Registriert
01.03.07
Beiträge
665
[…]
Zum Speichern von Daten, benutze /Library/Preferences für allgemeine Einstellungen, ~/Library/Preferences für benutzerspezifische Einstellungen, /Library/Application Support für sonstige allgemeinen Daten und ~/Library/Application Support für sonstige benutzerspezifische Daten. Es ist zu beachten, dass in Application Support keine Daten gespeichert sein sollten, ohne die das Programm nicht lauffähig wäre, die gehören nämlich direkt ins Bundle.

Gruss ppocket

Wobei man zum ersten CFPeferences, zum zweiten NSUserDefaults und für das letzte NSSearchPathForDirectoriesInDomains() verwenden sollte. Absolute Dateipfade (hier zähle ich mal ~ dazu) haben in einer Aplikation nichts verloren.
 

BenjiBenji

Alkmene
Registriert
11.03.09
Beiträge
32
Das ist nicht schöner, sondern fehlerhaft. Du darfst auch kein Interesse an einem absoluten Pfad haben, da dich das nichts angeht.

Wenn der Benutzer die Dateien, die er benutzen will woanders hin kopiert, soll er doch dürfen. Dann muss er eben dem Programm neu mitteilen, wo es die Dateien findet.

Ich hatte doch nie Interesse an absoluten Pfaden. Ich wollte eigentlich ja nur wissen, wie ich den Pfad bekomme, der sich ja von Benutzer zu Benutzer und Computer zu Computer ändern kann.


Hier geht es aber um Dateien, die der Benutzer vielleicht, höchstwahrscheinlich mit der Zeit sogar verändern will, deswegen finde ich, sollte er lieber selbst wissen, wo er seine Dateien aufbewahrt, damit er sich nicht durch eine von mir vorgegebene Struktur hängeln muss.
 

Poljpocket

Salvatico di Campascio
Registriert
07.01.07
Beiträge
432
Mach doch einfach eine Document-based Application und deine ganzen Probleme sind weg...

Gruss ppocket