NSString固定长度

时间:2013-03-03 18:10:20

标签: objective-c cocoa nsstring objective-c-category

我想要一个只能存储指定长度字符的nsstring对象。

如果超过它应该从左侧截断。例如,如果我将lenght设置为5,并且我输入值作为Ileana,那么它应该存储leana。

我尝试在nsstring上创建一个类别,但我没有想法:

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

}

请建议我该怎么办?我有一个想法,我需要观察字符串大小但是如何在一个类别中进行操作,以及将调用哪个通知?

2 个答案:

答案 0 :(得分:4)

这听起来像是用于显示或处理用户输入的格式或类似的东西,而不是你想要对字符串强加的实际约束。在这种情况下,NSFormatter类或某些特定控制器属性设置器中的一些代码将是一个好主意。

但是如果你真的希望它在字符串本身上,你需要在NSString上提供类似stringByTruncatingToLength:的方法,或者你需要在任何地方切换到使用NSMutableString,因为NSStrings根本无法修改setMaximumLength:方法会毫无意义。

答案 1 :(得分:2)

截断机制可以像这样实现:(对于自定义类的NSString属性)

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