我想要一个只能存储指定长度字符的nsstring对象。
如果超过它应该从左侧截断。例如,如果我将lenght设置为5,并且我输入值作为Ileana,那么它应该存储leana。
我尝试在nsstring上创建一个类别,但我没有想法:
-(void)setMaximumLength:(NSInteger)length;{
if ([self length]>length) {
NSLog(@"exxed");
}
}
请建议我该怎么办?我有一个想法,我需要观察字符串大小但是如何在一个类别中进行操作,以及将调用哪个通知?
答案 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;
}