2016-07-21 6 views
1

[NSKeyedArchiver archivedDataWithRootObject:dataArray]を使用して画像と文字列で構成されるモデルを含む配列を保存しようとしています。このメソッドは、このメソッドを呼び出す回数が2〜3回になるとnilを返します。 これは、アーカイブしようとしているモデルに画像が含まれている場合にのみ発生します。 データ配列がnilでないことを確認しました。NSKeyedArchiver archivedDataWithRootObject画像モデルの配列が渡されたときに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

データアレイには何が含まれていますか? – Mario

+0

モデルを含み、各モデルは画像と文字列で構成されています。 –

+0

私は、それはどこに設定されているのですか? – Mario

答えて

0

それはあなたがあなたのイメージをロードした方法によって異なります。 は下に私が使用していたコードです。ここ はあなたを助けるかもしれない答えです。また

How to encode a UIImage in an `NSCoder`

、あなたは.JPEG画像を保存したい場合はUIImageJPEGRepresentationを使用する場合があります。

関連する問題