我无法弄清楚为什么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包含数据。
答案 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];