Frage

Ich verwende NSData ein Bild in meiner Anwendung zu bestehen bleiben. Ich speichern Sie das Bild wie so (in meinem App Delegierter):

- (void)applicationWillTerminate:(UIApplication *)application
{
    NSLog(@"Saving data");

    NSData *data = UIImagePNGRepresentation([[viewController.myViewController myImage]image]);
    //Write the file out!

    NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
    NSString *documentsDirectory = [paths objectAtIndex:0];

    NSString *path_to_file = [documentsDirectory stringByAppendingString:@"lastimage.png"];

    [data writeToFile:path_to_file atomically:YES];
    NSLog(@"Data saved.");
}

und ich es dann wie so lade zurück (in meinem View-Controller, unter viewDidLoad):

NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *documentsDirectory = [paths objectAtIndex:0];

NSString *path_to_file = [documentsDirectory stringByAppendingString:@"lastimage.png"];

if([[NSFileManager defaultManager] fileExistsAtPath:path_to_file])
{
    NSLog(@"Found saved file, loading in image");
    NSData *data = [NSData dataWithContentsOfFile:path_to_file];

    UIImage *temp = [[UIImage alloc] initWithData:data];
    myViewController.myImage.image = temp;
    NSLog(@"Finished loading in image");
}

Dieser Code funktioniert jedes Mal auf dem Simulator, aber auf dem Gerät, kann es nie wieder im Bild zu laden scheint. Ich bin mir ziemlich sicher, dass es spart, aber ich habe keinen Blick auf das Dateisystem.

Bin ich tun etwas seltsam? Ist der Simulator eine andere Art und Weise, um seine Verzeichnisse zugreifen als das Gerät?

Danke!

War es hilfreich?

Lösung

Aha! Nailed it!

Ich schreibe diese so jemand anderes ihre Haare ziehen sitzt nicht dort an Code starrte, fragte sich, warum es nicht funktioniert:)

Die problematische Zeile ist diese:

NSString *path_to_file = [documentsDirectory stringByAppendingString:@"lastimage.png"];

Es sollte wie folgt aussehen:

NSString *path_to_file = [documentsDirectory stringByAppendingPathComponent:@"lastimage.png"];

Der Grund hierfür ist, ohne es zu, Sie etwas entlang der Linien von /Files/Documentslastimage.png statt /Files/Documents/lastimage.png bekommen würde, da die Pfadkomponente Anfügen Pflege der Schrägstriche nimmt für Sie . Ich hoffe, das jemand anderes in der Zukunft hilft!

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top