2013-05-14 3 views
1

NSMutableArray 및 NSString을 보관해야하며 배열 및 문자열 내부의 데이터 변경없이 배열과 문자열을 검색하려고합니다.NSKeyedArchiver를 사용하는 동안 오류가 발생했습니다.

I는 다음과 같이 주어진, 아카이브에 대한

, 보관 취소를위한

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

,

, match.matchData이 게임 센터 걸릴 턴 방식에서 가져 오는있는 NSData 객체입니다
NSData *data=match.matchData; 
    NSKeyedUnarchiver *unarchiver = [[NSKeyedUnarchiver alloc] initForReadingWithData:data]; 
    mutableArray = [unarchiver decodeObjectForKey:@"array"]; 
    stringtakenValue = [unarchiver decodeObjectForKey:@"string"]; 
    [unarchiver finishDecoding]; 

.

걸릴 turnMethod가 호출되면 충돌합니다. 다음은 콘솔 창 오류 메시지입니다.

의한 캐치되지 않는 예외 'NSInvalidArgumentException'이유 응용 프로그램 종료 ' - [NSXPCEncoder encodeObject : forKey는 :]이 부호화기 만 NSSecureCoding을 (객체 클래스이다 채택 오브젝트 인코딩'. NSKeyedArchiver) '

답변

0

확실하지 않지만 unarchiver는 NSMutableArray가 아닌 NSArray를 반환한다고 생각합니다. 따라서 시도해보십시오

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