【问题标题】:Crashed while using NSKeyedArchiver使用 NSKeyedArchiver 时崩溃
【发布时间】:2013-05-14 07:17:29
【问题描述】:

我有一个 NSMutableArray 和 NSString 我想存档这些,还想检索数组和字符串而不更改数组和字符串内的数据。

我是这样给的,

对于存档,

NSMutableData *data = [[NSMutableData alloc]init];
                        NSKeyedArchiver *archiver = [[NSKeyedArchiver alloc] initForWritingWithMutableData:data];
                        [archiver encodeObject:arrayRandomNumberForUser forKey:@"array"];
                        [archiver encodeObject:stringBingo forKey:@"string"];
                        [archiver finishEncoding];

对于取消存档,

NSData *data=match.matchData;
    NSKeyedUnarchiver *unarchiver = [[NSKeyedUnarchiver alloc] initForReadingWithData:data];
    mutableArray = [unarchiver decodeObjectForKey:@"array"];
    stringtakenValue = [unarchiver decodeObjectForKey:@"string"];
    [unarchiver finishDecoding];

其中,match.matchData 是从 gamecenter 轮流方法获取的 NSData 对象。

当调用 take turnMethod 时,它会崩溃。这是控制台窗口错误消息。

由于未捕获的异常“NSInvalidArgumentException”而终止应用程序,原因:“ -[NSXPEncoder encodeObject:forKey:]:此编码器仅编码采用 NSSecureCoding 的对象(对象属于“NSKeyedArchiver”类)。'

【问题讨论】:

    标签: iphone ios6 game-center nskeyedarchiver


    【解决方案1】:

    我不确定,但我认为 unarchiver 返回的是 NSArray,而不是 NSMutableArray。所以试试

    mutableArray = [[unarchiver decodeObjectForKey:@"array"] mutableCopy];
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-08-23
      • 1970-01-01
      • 2020-12-18
      • 2014-04-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多