Tôi phải lưu trữ float
với giá trị INFINITY
và sau đó tìm kiếm nó.
Đây là mã của tôi ví dụ:float INFINITY có thể được lưu trữ bởi NSCoder, nhưng không được tìm kiếm
Object được lưu trữ:
@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
Và đây là lưu trữ/code dearchiving:
CodeInf *myCodeInf = [[CodeInf alloc] init];
NSData *data = [NSKeyedArchiver archivedDataWithRootObject:myCodeInf];
myCodeInf = [NSKeyedUnarchiver unarchiveObjectWithData:data];
Archiving hoạt động, nhưng dearchiving làm tăng lỗi:
* Terminating app due to uncaught exception 'NSRangeException', reason: '* -[NSKeyedUnarchiver decodeFloatForKey:]: value (inf) for key (INFINITY) too large to fit in 32-bit float'
Đây có phải là lỗi trong dearchiver không, hay tôi làm gì sai?
Cảm ơn CRD, tôi sẽ gửi báo cáo lỗi và cách giải quyết của bạn là tốt! –
Xin chào, @ ReinhardMänner bạn đã gửi báo cáo lỗi và liên kết là gì? Chúng tôi chỉ phải đối mặt với sự cố tương tự trên iOS 8.3 với giá trị float/giải mã mã hóa. Cảm ơn! – Danik
@Danik: Tôi đã gửi báo cáo lỗi ngày 12 tháng 6 năm 2013 nhưng chưa bao giờ có câu trả lời và nó vẫn mở. Số tham chiếu là 14126397. Đây có phải là "liên kết" mà bạn yêu cầu không? Hoặc làm thế nào tôi có thể nhận được một liên kết đến báo cáo này? –