내가 처음으로 키 입력 아카이버 클래스를 사용하려고 시도하고 있는데이 간단한 테스트 (OCUnit)의 마지막 어설 실패 해요 : 나는 아카이버가 보관되어 있음을 확인했다encodeRootObject를 사용하여 보관 된 항목을 보관 취소하는 올바른 방법은 무엇입니까?
- (void) testNSCoding
{
NSMutableDictionary *dict = [NSMutableDictionary dictionaryWithCapacity:5];
[dict setObject:@"hello" forKey:@"testKey"];
NSMutableData* data = [NSMutableData data];
NSKeyedArchiver *ba = [[NSKeyedArchiver alloc] initForWritingWithMutableData:data];
[ba encodeRootObject:dict];
[ba finishEncoding];
STAssertTrue(data.length != 0, @"Archiver gave us nothing.");
NSKeyedUnarchiver *bua = [[NSKeyedUnarchiver alloc] initForReadingWithData:data];
id decodedEntity = [bua decodeObjectForKey:@"root"];
[bua finishDecoding];
STAssertNotNil(decodedEntity, @"Unarchiver gave us nothing.");
}
, 난 문제가 보관되지 않았다고 가정합니다. Archives and Serializations Guide에 따르면 나는 Unarchiver를 어떻게 사용하고 있는지에 대해 약간의 문제가있을 것이라고 생각합니다.
감사합니다.
죄송 합니다만, "hello"문자열을 가져 오지 않으려 고합니다. 사전을 가져 오려고합니다. 위의 링크 된 페이지 하단에 귀하의 질문에 대답 : archiveRootObject : toFile :를 사용하여 이전에 생성 된 아카이브에 대한 아카이브 해제 프로세스를 사용자 정의하려는 경우 decodeObjectForKey : 및 키 "루트"를 사용하여 아카이브. –
NSUserDefaults에 대한 정보를 제공해 주셔서 감사합니다. 이 테스트는 내가 쓰고있는 훨씬 더 복잡한 산세 하위 시스템을위한 것입니다. NSUserDefaults로는 충분하지 않습니다. –
음,하지만 당신은'archiveRootObject : toFile :'을 사용하지 않았습니까? – Yuji