2012-08-08 2 views
0

에서 추출있는 NSString :나는 다음과 같이 NSKeyedArchiver에서있는 NSString을 추출하기 위해 노력하고 NSKeyedArchiver

NSMutableData *data = [[NSMutableData alloc] init]; 
NSKeyedArchiver *coder = [[NSKeyedArchiver alloc] initForWritingWithMutableData:data]; 
[coder encodeInt:1 forKey:@"myField"]; 
[coder finishEncoding]; 

NSString *myString = [[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding]; 
NSLog(@"%@", myString); 

문제는 mystring에이 전무는 점이다 (NSLog 인쇄 '(널)'). 위의 코드에 어떤 문제가 있습니까?

다른 게시물 내가 읽은 것은 일반적으로 인코딩이 잘못되어 (NSMutableData가 UTF-8 이외의 다른 인코딩을 사용하고 있기 때문) 언급했기 때문입니다. 나는 인코딩의 모든 다른 유형을 시도했지만 여전히 운이 없다.

답변

-1

문자열을 인코딩하는 위치가 표시되지 않습니다. 일반적으로 NSStringNSKeyedArchiver으로 인코딩 한 다음 NSKeyedUnarchiver을 사용하여 보관 취소합니다. 이 모든 것이 어떻게 작동하는지 당신이 이해하지 못하는 것처럼 보입니다. archiving using Obj-C에 관해 읽는 것이 좋습니다.

+0

감사합니다. 링크를 살펴 보았고 NSKeyedArchiver archiveRootObject : toFile :을 사용하여 인코딩 된 데이터를 파일로 출력하는 방법을 설명했습니다. 그러나 대신 NSString 개체의 문자열 표현을 얻고 싶습니다. 설명서에 따르면 NSString initWithData : encoding : 메서드는 트릭을 수행해야합니다 (즉, NSData를 가져 와서 NSString을 만듭니다). – Kyllan

+0

최종 목표는 무엇입니까? – FreeAsInBeer

+0

정확하게 이해하고 있는지 확인하려면 NSKeyedArchiver를 사용하여 "myField"키에 대해 int를 인코딩합니다. NSKeyedArchiver는 인코딩 된 데이터를 NSMutableData 'data'로 출력합니다. 그런 다음 '데이터'변수를 사용하여 NSString을 초기화합니다. 런타임에서 데이터를 문자열로 변환하는 방법 (즉, UTF-8, ASCII 또는 무수한 다른 문자열 일 수있는 지정된 문자열 인코딩 사용)을 알 수 있도록 인코딩을 지정해야합니다. 이 말이 맞습니까? – Kyllan

관련 문제