2009-08-30 4 views

답변

63

당신은 두 가지 옵션이 있습니다

NSString *otherString = @"TestString"; 

NSString *str = [NSString stringWithUnichar:[otherString characterAtIndex:1]]; 

로 전화를 걸거나 그냥 직접 같이 갈 수있는 그런

@interface NSString (MNNSStringWithUnichar) 
+ (NSString *) stringWithUnichar: (unichar) value; 
@end 


@implementation NSString (MNNSStringWithUnichar) 

+ (NSString *) stringWithUnichar:(unichar) value { 
    NSString *str = [NSString stringWithFormat: @"%C", value]; 
    return str; 
} 

@end 

:

를 첫 번째는 NSString에 stringWithUnichar 방법을 추가하는 카테고리입니다
NSString *str = [NSString stringWithFormat:@"%C",[otherString characterAtIndex:1]]; 

반복적으로 사용하려는 경우 또는 한 번만 수행해야하는 경우 범주를 선택하십시오. , stringWithFormat 예제를 사용하십시오 !!

있는 NSString의 내부 확실 할,하지만 난 그게 아마이

unichar * 

나 (는 C의 char * 같은) unichars의 배열

가 unichar에이 단순히 포장 추측 거라고하지 문자를 저장하는 데 사용되는 16 비트 값 부호가없는 8 비트 문자와 달리 0-255 이상을 유지할 수 있으므로 16 비트 문자 인 유니 코드 문자도 저장할 수 있습니다. 있는 NSString은 unichars

편집의 배열을 포함하는 (클러스터) 클래스 [ES]는 여기

는 사람들이있는 NSString가 어떻게 생각하는지에 대해 몇 가지 기사 :

http://cocoawithlove.com/2008/08/string-philosophies-char-arrays.html

도움이

http://www.reddit.com/r/programming/comments/6v1yw/string_philosophies_char_arrays_stdstring_and/

희망!

+ (id)stringWithCharacters:(const unichar *)characters length:(NSUInteger)length; 

그러니 그냥 사용 :

yourString = [NSString stringWithCharacters: &yourChar length: 1]; 

yourChar 매개 변수가 포인터해야

+0

"TestString"전에 @를 잊었습니까? – newacct

+0

나는 무언가가 올바르게 보이지 않았다는 것을 알고 있었다 ... 감사합니다! – micmoo

4

또 다른 옵션은 클래스 메소드를 사용하는 것입니다.

2

NSString은 실제로 클래스 클러스터입니다.이것은 콘텐츠와 크기에 기반한 성능을 비롯하여 다양한 이유로 NSString을 만들 때 CFString에 대한 무료 브리징을 지원한다는 것을 의미합니다. NSString이면 요청할 때 isKindOf에 YES를 반환하는 많은 개인용 클래스 중 하나를 실제로 얻을 수 있습니다. NSString 클래스의 모든 메서드에 응답합니다. 이것은 프로토콜과 같지만 모든 객체는 공개 API에서 NSString을 말하고 실행합니다.

NSString과 CFString에 대한 문서에서 개념적으로 UTF16 unichar 배열 인 은 구현에 이점이있는 다른 내부 표현을 사용할 수도 있고 사용하게 될 수도 있습니다. 일반적으로 성능은 때때로 메모리 크기입니다. 하지만 API를 사용하여 요청할 때 unichar를 제공하는 C 배열을 사용할 수 있습니다.

성숙하는 데 오랜 시간이 걸렸으며 거의 ​​모든 릴리스에서 내부적으로 조정됩니다.

간단히 말해서 유니 코드 표준의 논리 문자열에 대한 설명과 크게 일치하는 UTF16 unichar 배열에 의해 뒷받침되는 것으로 생각할 수 있습니다. 그러나 명심해야 할 것은 실제로 내부에 무엇이 있는지를 걱정할 필요가 없다는 것입니다.

유니 코드의 가장 좋은 구현 중 하나입니다. 어떻게 작동하는지 더 자세히 알고 싶다면 opensource.apple.com에서 CFString 소스 (대부분)를 볼 수 있습니다. C 및 Core Foundation (객체 지향 C)이며 공정하게 양식화되어 있으므로 기대하지 마십시오. 즉시 이해하십시오.

NSString과 CFString에는 unichar에서 돌아오고 만드는 메소드가 있습니다. 대부분의 사람들은 대부분 시간을 필요로하지 않아야합니다. 한다면 조심하고, 많은 것을 읽고 순전 한 실수를 할 준비를하십시오. 유니 코드는 큰 주제입니다. 정확하게 다루는 것은 그 수준의 과학과 예술입니다. 그것이 NSString의 이유 중 하나입니다. 그것은 많은 어려운 것들을 처리하므로, 당신이 원하지 않거나 필요로하지 않는 한 그렇게 자주 할 필요가 없습니다.

관련 문제