2016-07-21 9 views
1

Ich versuche ein Array zu speichern, das Modelle enthält, die aus einem Bild und einer Zeichenfolge bestehen, wobei [NSKeyedArchiver archicedDataWithRootObject: dataArray]; Diese Methode gibt jedoch nach 2-3-maligem Aufruf der Methode nil zurück. Dies geschieht nur, wenn das Modell, das ich zu archivieren versuche, ein Bild enthält. Ich habe überprüft, dass Daten-Array nicht Null ist. Beneath IS Code I am veRWeNdeN:NSKeyedArchiver archivedDataWithRootObject return nil, wenn ein Array von Image-Modellen übergeben wurde

@implementation ImagesModel 

- (id)initWithCoder:(NSCoder *)coder{ 
    if(self = [super init]){ 
     self.image = [[UIImage alloc]initWithData:[coder decodeObjectForKey:@"image"]]; 
     self.urlString = [coder decodeObjectForKey:@"urlString"]; 
    } 
    return self; 
} 

- (void)encodeWithCoder:(NSCoder *)coder 
{ 
    [coder encodeObject:UIImagePNGRepresentation(self.image) forKey:@"image"]; 
    [coder encodeObject:self.urlString forKey:@"urlString"]; 
} 

+ (NSDictionary *)getObjectMapper { 
    if (!mapperDictionary) { 
     NSMutableDictionary *dictionary = [NSMutableDictionary dictionary]; 
     [dictionary setObject:[PropertyMapping mappingForSimpleTypeWithMappedKeyName:@"image"] forKey:@"image"]; 
     [dictionary setObject:[PropertyMapping mappingForSimpleTypeWithMappedKeyName:@"urlString"] forKey:@"urlString"]; 
     mapperDictionary = [dictionary copy]; 
    } 
    return mapperDictionary; 
} 
- (NSData)ArchiveData { 
    if (!dataArray){ 
     return NO; //nothing to save 
    } 
NSData *data = [NSKeyedArchiver archivedDataWithRootObject:dataArray]; //Return Nil 
} 
+0

Nun, was enthält Dataarray? – Mario

+0

Es enthält Modelle, und jedes Modell besteht aus einem Bild und einer Zeichenfolge. –

+0

Ich meine, wo ist es eingestellt? – Mario

Antwort

0

Es depends auf how Sie have loaded Ihre image. Hier ist eine Antwort, die dir helfen könnten:

How to encode a UIImage in an `NSCoder`

Auch UIImageJPEGRepresentation verwenden Sie vielleicht, wenn Sie JPEG-Bilder gespeichert werden sollen.