Значение архивов отличается прошивкой 6 и 7 прошивкой, когда архив MyDTO.
Почему это происходит?Значение архивов отличается прошивкой 6 и прошивкой 7
MyDTO.h
@property (nonatomic, strong) NSString *aaa;
@property (nonatomic, strong) NSString *bbb;
MyDTO.m
- (void)encodeWithCoder:(NSCoder *)encoder
{
[encoder encodeObject:_aaa forKey:@"aaa"];
[encoder encodeObject:_bbb forKey:@"bbb"];
}
MyMethod
- (void)test {
MyDTO *myDTO = [[MyDTO alloc] init];
myDTO.aaa = @"1";
myDTO.bbb = @"2";
//data is different in iOS 6 and iOS 7
NSData *data = [NSKeyedArchiver archivedDataWithRootObject:myDTO];
}
Редактировать
Ошибка происходит в следующих шагах.
- Архив DTO (IOS 6)
- До версии ОС (IOS 6 -> IOS 7)
- разархивировать из DTO (IOS 7) < - Ошибка!
Error Log
[NSKeyedUnarchiver initForReadingWithData:]: incomprehensible archive (0x48, 0xfffffff2, 0xffffffd7, 0xffffff89, 0xffffff80, 0xffffffa8, 0x70, 0xffffff8d)
Normal в следующих шагах.
- Архив DTO (IOS 6)
- разархивировать из DTO (IOS 6)
ИЛИ
- Архив DTO (IOS 7)
- Dearive of DTO (iOS 7)
Я предполагал, что ценность архивов различна.
Формат, вероятно, был изменен в iOS 7. [Он должен быть совместим] (http://stackoverflow.com/questions/16538581/nskeyedarchiver-nskeyedunarchiver-compatibility-on-different-ios-versions) – Petesh
Я архивирую MyDTO в iOS 6. Теперь моя ОС - iOS7. Я не могу разблокировать MyDTO. Есть ли решение? –
Вы тестируете на реальных устройствах? Я был успешной архивация и dearchiving на 6,1 -> 7,0 (32bit, 64bit), и когда я скопировал данные обратно в систему 6.1 для этого простого объекта, он работал отлично – Petesh