【发布时间】:2013-06-12 07:29:34
【问题描述】:
我必须归档一个值为INFINITY 的float,然后才能取消归档。
这是我的示例代码:
要归档的对象:
@interface CodeInf : NSObject <NSCoding>
@end
@implementation CodeInf
- (void)encodeWithCoder:(NSCoder *)encoder {
float inf = INFINITY;
[encoder encodeFloat: inf forKey:@"INFINITY"];
}
- (id)initWithCoder:(NSCoder *)decoder {
if (self = [super init]) {
float decodedInf = [decoder decodeFloatForKey: @"INFINITY"];
}
return self;
}
@end
这是归档/取消归档的代码:
CodeInf *myCodeInf = [[CodeInf alloc] init];
NSData *data = [NSKeyedArchiver archivedDataWithRootObject:myCodeInf];
myCodeInf = [NSKeyedUnarchiver unarchiveObjectWithData:data];
存档有效,但取消存档会引发错误:
* 由于未捕获的异常“NSRangeException”而终止应用程序,原因:“* -[NSKeyedUnarchiver decodeFloatForKey:]: value (inf) for 键 (INFINITY) 太大,无法容纳 32 位浮点数'
这是 dearchiver 中的错误,还是我有什么问题?
【问题讨论】:
标签: ios objective-c archiving