0

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

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

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

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

}

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

4

2 回答 2

4

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

但是如果你真的希望它出现在字符串本身上,你要么需要提供一个像stringByTruncatingToLength:NSString 这样的方法,要么你需要在任何地方切换到使用 NSMutableString,因为 NSStrings 根本无法修改,因此一个setMaximumLength:方法将毫无意义。

于 2013-03-03T19:21:59.760 回答
2

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

-(void)setName:(NSString*)newName
{
  if([newName length]> maxLength)
{
   newName = [newName substringWithRange:NSMakeRange([newName length] - maxLength, maxLength];
}
   _name = newName;
}
于 2013-03-03T19:16:27.787 回答