我正在尝试在文本标签中显示结果,但是我得到的结果与NSLog不同:
if( [elementName isEqualToString:@"CommunityID"])
{
self.recordResults = FALSE;
ResultLabel.text = @"CommunityID: %@", self.soapResults;
NSLog(@"CommunityID:%@",self.soapResults);
self.soapResults = nil;
}
NSlog正确显示文本结果,但UILabel没有。错误显示:
“未使用属性访问结果 - 不应将getter用于副作用”
我不明白NSlog如何获得信息,但另一个没有?有什么想法吗?
答案 0 :(得分:1)
您无法直接分配,您需要使用stringWithFormat
属性
ResultLabel.text = [NSString stringWithFormat:@"CommunityID: %@", self.soapResults];
答案 1 :(得分:0)
只是让你知道发生了什么以及编译器警告的内容......
在C和Objective-C中,不在函数或方法调用中分隔参数的逗号(,
)是逗号运算符。这是一个复合表达。评估左侧子表达式但丢弃其结果。然后,评估右手子表达式,并且整个复合表达式取其值。
在您的情况下,复合表达式仅用作语句,并且未使用其结果。所以,你的陈述:
ResultLabel.text = @"CommunityID: %@", self.soapResults;
相当于:
ResultLabel.text = @"CommunityID: %@";
self.soapResults;
这些语句中的第二个调用属性getter并丢弃结果值。编译器警告你。要么你不是故意这样做(就像在这种情况下)或者你正在调用getter,因为getter有你想要的副作用,这是一个非常糟糕的主意。