0

我想通过类别自行分配调整后的 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方法,但是就没有像上面那样的方法吗???

问候和感谢,

马蒂亚斯

4

2 回答 2

3

您不需要创建新的 NSString,该方法已经为您完成了:

- (NSString *)xTrim
{
    return [self stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceCharacterSet]];
}

NSString 是不可变的,所以你需要分配它:

yourString = [yourString xTrim];
于 2012-11-23T12:31:02.777 回答
3

您不能在 上的类别中执行此操作NSString,因为NSString管理不可变字符串,这意味着字符串在创建后无法更改。

您可以将其实现为类别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:不,这是不可能的。

于 2012-11-23T12:59:39.933 回答