2012-12-17 3 views
1

이 코드 줄을 사용하면 앱이 다운 될 수 있습니다.null 문자열을 nsstring에서 제거합니다. iOS

trimmedtext=[NSString stringWithCString:[mycharstring cStringUsingEncoding:[ NSString defaultCStringEncoding ] ] encoding:NSUTF8StringEncoding]; 

오류 : * 의한 캐치되지 않는 예외 'NSInvalidArgumentException'이유 응용 프로그램 종료 '* + [있는 NSString stringWithCString : 인코딩 :] : NULL CString을'

NULL 있기 때문에 그것은 충돌 문자 내 NSString에서 생각합니다.

NSLog는 나에게이 'friendXx'를 제공합니다. 문자열에 이모티콘이 있습니다!

이 문제를 어떻게 극복 할 수 있습니까?

도움을 주시면 감사하겠습니다.

정답 : text = [NSString stringWithCString : [mycharstring UTF8String] encoding : NSUTF8StringEncoding];

+0

'mycharstring'이 유효한지 확인 했습니까? –

+0

NSLog는이 친구에게 XXX를주었습니다. 문자열에 이모티콘이 있습니다! – stefanosn

+0

이 코드로 실제로 무엇을 달성하려고합니까? – omz

답변

6

NSString에 NULL 문자가 있기 때문에 충돌이 발생합니다.

예외는 아닙니다.

문제는 C 문자열 (const char *)의 포인터가 값이 NULL 인 포인터입니다. 이자형. 그것은 잘못된 포인터입니다. 예를 들어, mycharstring 변수가 nil 일 수 있습니다.

편집 : 문자열에 기본 C 문자열 인코딩이 처리 할 수없는 기호가 있기 때문에 NULL을 반환합니다. 대신 [mycharstring UTF8String]을 사용해보십시오.

+0

NSLog에서 나에게 'friendXx'를주었습니다. 문자열에 이모티콘이 있습니다! – stefanosn

+0

@stefanosn 편집 참조. –

+1

효과가 있습니다! 고마워요! 이것은 올바른 코드입니다 : text = [NSString stringWithCString : [mycharstring UTF8String] encoding : NSUTF8StringEncoding]; – stefanosn

관련 문제