我有一个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'类)。
答案 0 :(得分:0)
我不确定,但我认为unarchiver返回NSArray,而不是NSMutableArray。所以试试
mutableArray = [[unarchiver decodeObjectForKey:@"array"] mutableCopy];