ios 数据归档问题 请教一个问题:我们把数据归档的时候,CGPoint类可以直接归档吗?还有那些自定义的绘图类含有image也可以归档吗,怎么归档存储。 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 对象才可以归档 你可以找找NSObject+Autocoding 这个类可以给所有类型归档 有没有相关的文章或者代码参照下啊?你把CGPoint包到NSValue里就可以了 你是问CGPoint与UIImage的归档吧,刚才写了个demo都可以啊。1)自定义的类里面继承NSCoding 与NSCopying,你的point就定义成NSValue。@property (copy,nonatomic) UIImage *image;@property (copy,nonatomic) NSValue *point;2)归档的时候就用encodeObject [encoder encodeObject:image forKey:@”ImageKey”]; [encoder encodeObject:point forKey:@”PointKey”];3)存的时候 CGPoint point = CGPointMake(1.1, 2.2); NSValue *value = [NSValue valueWithCGPoint:point]; //存储数据到类 Archive *archivingData = [[Archive alloc] init]; archivingData.image = [UIImage imageNamed:@"pic.jpg"]; archivingData.point = value; NSMutableData *data = [[NSMutableData alloc] init]; NSKeyedArchiver *archiver = [[NSKeyedArchiver alloc] initForWritingWithMutableData:data]; [archiver encodeObject:archivingData forKey: @"ArchivingData"]; [archiver finishEncoding]; //写入文件 [data writeToFile:self.archivingFileRootPath atomically:YES];// archivingFileRootPath就是存的路径4)取得时候 NSData *data = [[NSMutableData alloc] initWithContentsOfFile:self. archivingFileRootPath]; NSKeyedUnarchiver *unarchiver = [[NSKeyedUnarchiver alloc] initForReadingWithData:data]; //获得类 Archive *archivingData = [unarchiver decodeObjectForKey: @"ArchivingData"]; [unarchiver finishDecoding]; self.imageView.image = archivingData.image; NSValue *value = archivingData.point; CGPoint point = [value CGPointValue]; NSLog(@"%f||%f",point.x,point.y);当然如果你是做游戏的话,建议你把那些CGPoint都放到NSArray里面吧(转化为NSValue) 如何保存类中的字符串变量,求解,请教各位 iphone的内存与degug aac 和amr 格式的音频转换 CAKeyframeAnimation 失效的疑问 使用NSMutableURLRequest进行文件POST的进度问题 apple push中remoteNotification的问题 网站app下载怎么弄 xcode7安装SDWebImage的步骤 看中一款 iOS APP 的实现效果,但是作为新手的我却不知该如何实现,麻烦各位大牛帮忙看看,给个思路就行 谢谢了 ios中的设计模式 怎么用电脑登录苹果手机里面的APP 遇见一个奇怪的问题求帮忙
@property (copy,nonatomic) UIImage *image;
@property (copy,nonatomic) NSValue *point;2)归档的时候就用encodeObject
[encoder encodeObject:image forKey:@”ImageKey”];
[encoder encodeObject:point forKey:@”PointKey”];3)存的时候
CGPoint point = CGPointMake(1.1, 2.2);
NSValue *value = [NSValue valueWithCGPoint:point];
//存储数据到类
Archive *archivingData = [[Archive alloc] init];
archivingData.image = [UIImage imageNamed:@"pic.jpg"];
archivingData.point = value;
NSMutableData *data = [[NSMutableData alloc] init];
NSKeyedArchiver *archiver = [[NSKeyedArchiver alloc] initForWritingWithMutableData:data];
[archiver encodeObject:archivingData forKey: @"ArchivingData"];
[archiver finishEncoding];
//写入文件
[data writeToFile:self.archivingFileRootPath atomically:YES];// archivingFileRootPath就是存的路径4)取得时候
NSData *data = [[NSMutableData alloc] initWithContentsOfFile:self. archivingFileRootPath];
NSKeyedUnarchiver *unarchiver = [[NSKeyedUnarchiver alloc] initForReadingWithData:data];
//获得类
Archive *archivingData = [unarchiver decodeObjectForKey: @"ArchivingData"];
[unarchiver finishDecoding];
self.imageView.image = archivingData.image;
NSValue *value = archivingData.point;
CGPoint point = [value CGPointValue];
NSLog(@"%f||%f",point.x,point.y);
当然如果你是做游戏的话,建议你把那些CGPoint都放到NSArray里面吧(转化为NSValue)