2013-05-14 3 views
1

У меня есть NSMutableArray и NSString. Я хочу архивировать их, а также хочу получить массив и строку без изменений в массиве и строке.Сбой при использовании NSKeyedArchiver

Я дал, как это,

для архива,

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 является объектом NSData получения от GAMECENTER метода поворота тейк ,

При вызове метода turnMethod он разбился. Вот сообщение об ошибке окна консоли.

Согласующего приложение из-за неперехваченное исключение 'NSInvalidArgumentException', причина: ' - [NSXPCEncoder encodeObject: forKey:]: Этот кодер только кодирует объекты, которые принимают NSSecureCoding (объект класса ''. NSKeyedArchiver)'

ответ

0

Я не уверен, но я думаю, что unarchiver возвращает NSArray, а не NSMutableArray. Поэтому попробуйте

mutableArray = [[unarchiver decodeObjectForKey:@"array"] mutableCopy]; 
Смежные вопросы