Bild-Pfade von NSBundle in Objective C?
Ich habe über 60 Bilder, die ich speichern möchten, die in der Core-Daten, von denen 30 sind Avatare und haben das Präfix avt_filename_00X.png und 30 von Ihnen sind kleiner und haben einen anderen Präfix.
Eher als das speichern Sie alle Bilder als BLOBs in Core Data/SQLite, möchte ich zum speichern der Pfade für jedes Bild gefunden (in der gleichen Weise würden Sie speichern, Bild Pfade für eine MySQL-Datenbank).
Aber ich bin nicht sicher, wie Sie Sie zu packen, den Pfad des Bildes, wie Sie in NSBundle.
Bekomme ich den Pfad zu den NSDocumentDirectory über:
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *documentsDirectory = [paths objectAtIndex:0];
NSFileManager *fileManager = [NSFileManager defaultManager];
[fileManager fileExistsAtPath:documentsDirectory];
NSLog(@"documentsDirectory = %@", documentsDirectory);
Und ich kann laden Sie das Bild und fügen Sie es in ein array.
if (qty == 0)
{
//NSLog(@"fileToLoad = %@", fileToLoad);
UIImage *img = [[UIImage alloc] initWithContentsOfFile:[[NSBundle mainBundle] pathForResource:fileToLoad ofType:fileExt]];
[self.avtList addObject:img];
[img release];
} else {
//load multiple image into an array
//not coded yet
}
Aber, was ich bin mir nicht sicher, ist:
-
Wie kann ich schnappe mir den Pfad, wo der computer das Bild gefunden, sobald Ihr im inneren der NSBundle?
-
Wie kann ich sicher sein, dass der Weg funktioniert, wenn die app auf einem Gerät?
Die Idee wäre, um alle gespeicherten Bilder in ein array und dann drücken Sie Core Data/SQLite zu einem späteren Zeitpunkt.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Den richtigen Weg, um den vollen Pfad zu einer Ressource in der Haupt-bundle:
(oder Sie geben die leere Zeichenfolge für 'ofType' wenn Sie es vorziehen, geben Sie die Erweiterung in der Ressource-name)
Aber nirgendwo in der Dokumentation ist der Pfad bleibt garantiert immer den gleichen Geräten, Betriebssystem Iterationen, etc. Es ist der Pfad zu dieser Datei aus dem application bundle in der aktuellen Umgebung, garantiert behalten Ihre Gültigkeit für die Dauer der Ausführung der Anwendung nur.
Da der Pfad zu der Anwendung, und damit auf Ihre Ressourcen, die nicht garantiert sind, bleiben die gleichen, ich denke, es ist explizit unsicher ist, legen Sie es in eine SQL-Datenbank-mit allen Mitteln.
Könntest du vielleicht übernehmen, eine Regelung, Wonach eine mit dem Namen ab /ist eine komplette Pfad ohne /am Anfang wird davon ausgegangen, dass in dem Bündel, was bedeutet, dass Sie anwenden können, die Logik, die von außen auf die Datenbank?
Darin liegt der Haken: Sie können nicht. Sie würde am besten sein, lassen Sie die Pfade behandelt werden on-the-fly, und vielleicht speichern nur den Dateinamen statt.