2013-03-03 1 views
0

지정된 문자 길이 만 저장할 수있는 nsstring 개체가 필요합니다.고정 길이의 NSString

초과하면 왼쪽부터 잘립니다. 예를 들어 길이를 5로 설정하고 값을 Ileana로 입력하면 leana를 저장해야합니다.

나는있는 NSString에 카테고리를 만들어 시도하지만 난 밖으로 아이디어입니다 :

-(void)setMaximumLength:(NSInteger)length;{ 
    if ([self length]>length) { 
     NSLog(@"exxed"); 
    } 

} 

는 어떻게해야합니까 제안하세요? 나는 내 마음 속에 하나의 thng을 가지고있다. 나는 문자열의 크기를 관찰 할 필요가 있지만, 어떤 범주에서 어떻게해야 하는가, 그리고 어떤 통보가 불릴 것인가?

+1

나를 위해 소리가납니다.이 속성에 대한 개별 설정기를 사용하는 것과 같습니다. setter에서 문자열을자를 수 있습니다. –

+0

동의. 주어진 객체의 "foo"속성 (문자열 일 수 있음)이 최대 길이를 갖는다 고 말하는 것이 아니라, 최대 길이를 갖는 특수한 종류의 문자열을 갖는 것이 이상한 것처럼 보입니다. 일레야,이 사건을 설명 할 수 있니? NSStrings는 불변이므로 위의 메소드 (또는 이와 비슷한 것)를 호출 할 수있는 시점이 없습니다. –

+0

NSString 개체를 변경할 수 없습니다. 그들을자를 수 없습니다. 유사한 효과를 위해서'substringFromIndex :'또는'substringToIndex :'를 사용할 수 있습니다. – zneak

답변

4

이 실제보다 같은 디스플레이 또는 처리를 사용자 입력 또는 무언가 포맷 같은 의심 사운드 (정의 클래스의이 NSString 속성) 문자열에 일반적으로 부과하려는 제약 조건. 이 경우 NSFormatter 클래스 나 특정 컨트롤러 속성 설정 기의 코드 비트가 좋은 생각입니다. 당신이 정말로이 문자열 자체에있을하려는 경우

는하지만, 당신이 하나가있는 NSString에 stringByTruncatingToLength: 같은 방법을 제공하는 데 필요하거나 NSStrings는 따라서 setMaximumLength: 방법을 전혀 수정되지 않을 수 있기 때문에 당신은 사방 인 NSMutableString 사용으로 전환 할 필요가 일종의 무의미합니다.

2

절단의 메커니즘은 다음과 같이 구현 될 수있다 :

-(void)setName:(NSString*)newName 
{ 
    if([newName length]> maxLength) 
{ 
    newName = [newName substringWithRange:NSMakeRange([newName length] - maxLength, maxLength]; 
} 
    _name = newName; 
} 
+0

NSString이 클래스 클러스터라는 사실을 알고 계십니까? – vikingosegundo

+0

당신 NSString 서브 클래 싱 이야기하지만 코드 doesnt 그것을 보여 – vikingosegundo

+0

예. 내 잘못입니다. 위의 코드는 내 사용자 정의 클래스에 NSString 유형의 속성 "Name"에 대한 setter를 구현하는 방법을 보여줍니다. – alex

관련 문제