当我按下按钮并将值发送到标签时,我试图从本地URL读取一些值。一旦我启动应用程序,我第一次按下按钮,我得到的价值。但是第二次按下按钮,即使NSLog消息继续显示该值,标签也没有文本。任何想法?
这是代码:
- (IBAction)refresh:(id)sender {
NSArray *listItems;
NSString *msg;
NSStringEncoding encoding;
NSURL *url = [NSURL URLWithString:@"http://192.168.1.177"];
NSData *data = [NSData dataWithContentsOfURL:url];
msg = [[NSString alloc] initWithData:data encoding:encoding];
listItems = [msg componentsSeparatedByString:@" "];
label.text = listItems[0];
NSLog(listItems[0]);
}
答案 0 :(得分:0)
您的encoding
变量永远不会使用值初始化,因此它的默认值为0
,根据NSStringEncoding
,它不是NSString.h
的有效值。如果您在Xcode中运行静态分析器( Command - Shift - B ),您将收到一条消息,该消息具有未初始化的值使用
更改此行:
msg = [[NSString alloc] initWithData:data encoding:encoding];
到此:
msg = [[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding];
(替换相应的编码,但NSUTF8StringEncoding
是一个很好的初步猜测。)
您还应该使用格式字符串进行记录:
NSLog(@"%@", listItems[0]);