我正在尝试从服务器获取JSON数据后更新UILabel。我已经尝试了很多方法来修复它,但它仍然无效。
这是我的代码
class ShopInformation: UIViewController {
var latitude = String();
var longitude = String();
var shopInformation:JSON = nil;
@IBOutlet weak var name: UILabel!
@IBOutlet weak var addres: UILabel!
override func viewDidLoad() {
super.viewDidLoad()
let url = NSURL(string: "http://localhost/whatapro/json/shopinformation.php?latitude=\(self.latitude)&longitude=\(self.longitude)")
let task = NSURLSession.sharedSession().dataTaskWithURL(url!) {
(data, response, error) in
// print(NSString(data: data!, encoding: NSUTF8StringEncoding))
self.shopInformation = JSON(data: data!)
print(self.shopInformation["response_data"][0])
dispatch_async(dispatch_get_main_queue()) {
self.name.text = self.shopInformation["response_date"][0]["name"].string
self.addres.text = self.shopInformation["response_date"][0]["address"].string
}
}
task.resume()
}
}
我也试过这种方式
dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_HIGH, 0)) {
dispatch_async(dispatch_get_main_queue()) {
self.name.text = self.shopInformation["response_date"][0]["name"].string
self.addres.text = self.shopInformation["response_date"][0]["address"].string
}
}
谢谢
答案 0 :(得分:1)
展开代码,将JSON
中的值分解为单独的变量。在分配变量后设置断点,然后检查调试器中的值,并检查self.name
和self.addres
出口的值。
我的猜测是你的一个或两个网点没有连接。
(使用dispatch_async(dispatch_get_main_queue())
的代码的第一个版本看起来是正确的。)