我想通过类别自行分配调整后的nsstring。 示例是修剪函数:
我不希望这样:
NSString *theTempString = [theExampleString xTrim];
// ... go on doing stuff with theTempString
我想这样:
[theExampleString xTrim];
// ... go on doing stuff with theExmapleString
该类别如下所示:
- (void)xTrim
{
self = [self stringByTrimmingCharactersInSet: [NSCharacterSet whitespaceCharacterSet]];
}
无法在init外部进行分配的错误 - 我理解这一点。 但是现在我对它很感兴趣,当然我可以编写一个自定义的init方法,但是没有办法像上面那样吗?
问候和感谢,
的Matthias
答案 0 :(得分:3)
您不需要创建新的NSString,该方法已经为您完成了这项工作:
- (NSString *)xTrim
{
return [self stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceCharacterSet]];
}
NSString是不可变的,因此您需要分配它:
yourString = [yourString xTrim];
答案 1 :(得分:3)
您不能在NSString
上的类别中执行此操作,因为NSString
管理不可变字符串,这意味着字符串在创建后无法更改。< / p>
您可以在NSMutableString
上将其实现为类别:
- (void)xTrim
{
NSString *trimmed = [self stringByTrimmingCharactersInSet: [NSCharacterSet whitespaceCharacterSet]];
[self setString:trimmed]; // replaces the characters of "self" with those of "trimmed".
}
如果您的问题是:我可以编写方法xTrim
,以便
[theExampleString xTrim]
用新实例替换接收者theExampleString
:不,这是不可能的。