0

ns mustable 配列を画像でアーカイブしようとしています。コードは次のようになります。

//in my .h file I have
#define kName @"name"
#define kEmail  @"email"
#define kPhone  @"phone"
#define kDetail @"detail"
#define kImages @"images"
#define kRequestDate  @"requestDate"
#define kRequestSent @"status"

@interface BAPRequest : NSObject
@property (nonatomic) NSString *name;
@property (nonatomic) NSString *email;
@property (nonatomic) NSString *phone;
@property (nonatomic) NSString *detail;
@property (nonatomic) NSMutableArray *images;
@property (nonatomic) NSDate *requestDate;
@property (nonatomic) BOOL requestSent;
@end

//in my .m file I have
#import "BAPRequest.h"

@implementation BAPRequest

@synthesize name, email, phone, detail;
@synthesize images;
@synthesize requestDate;
@synthesize requestSent;

- (void)encodeWithCoder:(NSCoder *)encoder{
  [encoder encodeObject:name forKey:kName];
  [encoder encodeObject:email forKey:kEmail];
  [encoder encodeObject:phone forKey:kPhone];
  [encoder encodeObject:detail forKey:kDetail];
  [encoder encodeObject:images forKey:kImages];
  [encoder encodeObject:requestDate forKey:kRequestDate];
  [encoder encodeBool:requestSent forKey:kRequestSent];
}

- (id)initWithCoder:(NSCoder *)decoder{
  name = [decoder decodeObjectForKey:kName];
  email = [decoder decodeObjectForKey:kEmail];
  phone = [decoder decodeObjectForKey:kPhone];
  detail = [decoder decodeObjectForKey:kDetail];
  images = [decoder decodeObjectForKey:kImages];
  requestDate = [decoder decodeObjectForKey:kRequestDate];
  requestSent = [decoder decodeBoolForKey:kRequestSent];
  return self;
}
@end

もちろん、私も他のみんなと同じように NSKeyedArchiver コードを持っています。

他のすべては適切にアーカイブされます。保存してからロードすると、すべて機能しているようです。

しかし、画像のアーカイブはそうではないようです。

アーカイブの前に各 BAPObjects をアーカイブする MutableArray がありますが、それは ios が MutableArray 内の MutableArray のアーカイブをサポートしていないためでしょうか、それともイメージを簡単にアーカイブできないからでしょうか?

乾杯フィル

4

2 に答える 2

1

画像をアーカイブするには使用しないでください

代わりに、またはを使用して UIImageを表現に変換します。NSDataUIImageJPEGRepresentationUIImagePNGRepresentation

次に、NSMutableArray

NSMutableArray編集:保存したいアイテムをに置き換える必要がありますNSData

NSData *imageData = UIImagePNGRepresentation([your_array objectAtIndex:0]);

UIImage をimageData

于 2012-11-07T18:47:33.280 に答える
1

Apple はUIImage、iOS 5.1 でアーカイブのサポートを追加しました。したがって、問題を解決する 1 つの方法は、展開ターゲットを iOS 5.1 に引き上げることです。

それができない場合は、UIImage および NSCoding iOS 5.1に対する最初の回答をご覧ください。そこにある実装は、Apple のアーカイブ サポートとの前方互換性がないことに注意してください。UIImage

于 2012-11-07T19:44:20.130 に答える