2016-07-21 4 views
1

Я пытаюсь сохранить массив, содержащий модели, которые состоят из изображения и строки, используя [NSKeyedArchiver archivedDataWithRootObject: dataArray]; но этот метод возвращает nil после 2-3 раз вызова этого метода. Это происходит только тогда, когда модель, которую я пытаюсь архивировать, содержит изображение. Я проверил, что массив данных не равен нулю. Под это код, я использую:NSKeyedArchiver archivedDataWithRootObject return nil при передаче массива модели изображения

@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

Ну, что содержит dataarray? – Mario

+0

Он содержит модели, и каждая модель состоит из изображения и строки. –

+0

Я имею в виду, где он установлен? – Mario

ответ

0

Это зависит от того, как вы загрузили изображение. Вот ответ, который может помочь вам:

How to encode a UIImage in an `NSCoder`

Кроме того, вы можете захотеть использовать UIImageJPEGRepresentation если вы хотите сохранить .jpeg изображения.