无法追加字符串

时间:2012-02-22 15:25:24

标签: objective-c objective-c-blocks

我无法弄清楚为什么self.tmp的输出为空。

这是我使用的代码

[self.dict enumerateKeysAndObjectsUsingBlock:^(id key, id obj, BOOL *stop)
{
    NSMutableString *t = [NSString stringWithFormat:@"%@ - %@", key, obj];
    [self.tmp appendString:t];
}];

NSLog(@"%@", self.tmp) --> print null;

tmp被声明为NSMutableString

我可以确认dict ivar包含数据。

4 个答案:

答案 0 :(得分:3)

因为self.tmp本身就是nil。你声明了它,但你有没有设置它或最初分配它?只有当您附加的内容是现有字符串时,附加才有效。

在Objective-C中,如果尝试附加到nil对象,则不会看到错误,您只会看到您看到的结果,即没有发生任何事情。

在您发布的代码之前,您可能希望这样做:

self.tmp = [NSMutableString string];

答案 1 :(得分:1)

你需要初始化和分配你的ivar tmp,一定要把它初始化为@"",这是你遇到问题的唯一问题。您不需要显式分配它,您可以使用自动释放的对象调用某些类的方法:

self.temp=[NSMutableString stringWithString:@""];

如果您的字符串设置为nil,则表示您正在添加nil,并且由于nil无法处理该行为,因此会产生意外结果。

答案 2 :(得分:0)

您可以在开始之前确认self.tmp != nil吗?

答案 3 :(得分:0)

未创建self.tmp。 做:

self.tmp = [NSMutableString new];