[英]Property access results unused but NSLog works fine
我试图在文本标签中显示结果,但是得到的结果与NSLog不同:
if( [elementName isEqualToString:@"CommunityID"])
{
self.recordResults = FALSE;
ResultLabel.text = @"CommunityID: %@", self.soapResults;
NSLog(@"CommunityID:%@",self.soapResults);
self.soapResults = nil;
}
NSlog可以正确显示文本结果,但UILabel不能。 错误显示:
“未使用属性访问结果-吸气剂不应用于副作用”
我不明白NSlog如何很好地获取信息,而其他人却不知道? 有任何想法吗?
您不能直接分配,需要使用stringWithFormat
属性
ResultLabel.text = [NSString stringWithFormat:@"CommunityID: %@", self.soapResults];
如此您就知道发生了什么以及编译器警告是关于什么的……
在C和Objective-C中,不分隔函数或方法调用中的参数的逗号( ,
)是逗号运算符。 它是一个复合表达式。 评估左手子表达式,但其结果被丢弃。 然后,评估右手子表达式,并且整个复合表达式取其值。
在您的情况下,复合表达式仅用作语句,而未使用其结果。 因此,您的声明:
ResultLabel.text = @"CommunityID: %@", self.soapResults;
等于:
ResultLabel.text = @"CommunityID: %@";
self.soapResults;
这些语句的第二个调用属性获取器,并丢弃结果值。 编译器警告您。 要么您不是要这样做(在这种情况下),要么是您要调用吸气剂,因为吸气剂具有您想要的副作用,这是一个非常糟糕的主意。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.