NSCoding + UIImage

  • NSCoding + UIImage

    Hi ich versuche ein Objekt welches unter anderem ein UIImage enthält abzuspeichern, das klappt auch alles recht gut, bis auf das bild, aber auch nur dann wenn ich das bild aus meinem resourcen-verzeichnis dazulade... bei bildern die ich selbst aufnehme mit der App habe ich kein problem...

    ich erhalte beim codieren immer eine positive rückmeldung, aber wenn ich es wieder "encodiere" dann bekomme ich für die images immer (null) heraus, ich arbeite für ios 5.0/5.1 da sollte UIImage doch bereits NSCoding unterstützen..?

    Zuerst dachte ich das ich vl nur den pointer übergebe, allerdings habe ich extra deswegen die property des UIImage auf "strong" gesetzt was ja meines wissens nach "copy" entspricht und damit sollte es ja eine eigene Instanz erstellt werden.. das wäre mir noch eingefallen...

    hier mal die entscheidenden stellen im code.._

    das image in meiner klasse...

    Quellcode

    1. @property(strong) UIImage * picture;

    das bild in der -initWithCoder..

    Quellcode

    1. self.picture = [decoder decodeObjectForKey:@"picture"];


    das bild in der -encodeWithCoder..

    Quellcode

    1. [encoder encodeObject:picture forKey:@"picture"];


    das speichern mache ich in -ApplicationDidEnterBackground.. (is das okay?) ich speichere einen mutable array der Objekte mit dem image ab, is das der Fehler?

    Quellcode

    1. NSLog(@"Try to save data...");
    2. BOOL isSaved = [NSKeyedArchiver archiveRootObject:[libary libaryFoodArray] toFile:[NSString stringWithFormat:@"%@/fooddata.txt",[[NSBundle mainBundle] bundlePath]]];
    3. if(isSaved){NSLog(@"Saved Data!");}else{NSLog(@"Failed Saving Data!");}


    und schließlich das laden der daten.. bzw wieder in den array schreiben...

    Quellcode

    1. libaryFoodArray = [NSKeyedUnarchiver unarchiveObjectWithFile:[NSString stringWithFormat:@"%@/fooddata.txt",[[NSBundle mainBundle] bundlePath]]];


    ich hoffe ihr könnt mir hierbei weiterhelfen

    llg faulk
  • ja hab ich gerade nochmal gecheckt, alle anderen objekte werden ja auch richtig gespeichert und wieder encoded...
    vl liegts an der art wie ich es zugewiesen hab..?

    hier mache ich die zuweisung

    Quellcode

    1. tempFood = [[Food alloc] init];
    2. tempFood.Title = [data objectAtIndex:0];
    3. tempFood.picture = [UIImage imageNamed:image];


    tempfood hab ich nur in der methode deklariert, sollte doch aber egal sein oder?
    kann es sein das mein image irgendwann released wird?, das komische ist aber das wenn ich die bilder einfüge sie erstmal da sind und richtig angezeigt werden, nur nach dem speichern nicht mehr da sondern null sind... :(

    lg lukas