使用NSKeyedArchiver时崩溃

时间:2013-05-14 07:17:30

标签: iphone ios6 game-center nskeyedarchiver

我有一个NSMutableArray和NSString我想存档这些并且还想要检索数组和字符串,而不需要在数组和字符串中包含更改数据。

我这样给了,

for Archive,

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

for UnArchive,

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'而终止应用,原因:' - [NSXPCEncoder encodeObject:forKey:]:该编码器仅编码采用NSSecureCoding的对象(对象属于'NSKeyedArchiver'类)。

1 个答案:

答案 0 :(得分:0)

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

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