3

当我归档 MyDTO 时,归档的值在 iOS 6 和 iOS 7 中是不同的。
为什么会这样?

MyDTO.h

@property (nonatomic, strong) NSString *aaa;
@property (nonatomic, strong) NSString *bbb;

我的DTO.m

- (void)encodeWithCoder:(NSCoder *)encoder
{
    [encoder encodeObject:_aaa forKey:@"aaa"];
    [encoder encodeObject:_bbb forKey:@"bbb"];
}

我的方法

- (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];
}

编辑

错误发生在以下步骤中。

  1. DTO 存档 (iOS 6)
  2. 操作系统的升级版本(iOS 6 -> iOS 7)
  3. DTO 的归档(iOS 7)<-错误!

错误日志

[NSKeyedUnarchiver initForReadingWithData:]: incomprehensible archive (0x48, 0xfffffff2, 0xffffffd7, 0xffffff89, 0xffffff80, 0xffffffa8, 0x70, 0xffffff8d)

在以下步骤中正常。

  1. DTO 存档 (iOS 6)
  2. DTO 的归档 (iOS 6)

或者

  1. DTO 存档 (iOS 7)
  2. DTO 的归档 (iOS 7)

我假设档案的价值是不同的。

4

1 回答 1

0

您可以传输 JSON 字符串而不是 NSData,并添加用于从 JSON 初始化 DTO 以及从 DTO 创建 JSON 的方法。我正在使用这种方法通过低功耗蓝牙交换数据,它在 iOS 7 和 iOS 8 设备之间运行良好。

于 2014-11-04T13:25:09.243 回答