lable.text - 致命错误
问题描述:
我有2个类。 在第一课我有一个标签和一个按钮,在第二课我有JsonPars功能lable.text - 致命错误
我需要写第二类的数据到第一类的标签。
这里是我的代码:
import UIKit
import CoreLocation
//main class
class ViewController: UIViewController{
@IBOutlet weak var labl: UILabel!
@IBAction func btn(sender: AnyObject) {
Json().Pars()
}
override func viewDidLoad() {
super.viewDidLoad()
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
}
}
和第二类:
import Foundation
//Json-class
class Json {
func Pars() {
let url = NSURL(string: "http://my.url.com")
let task = NSURLSession.sharedSession().dataTaskWithURL(url!, completionHandler: {data, response, error -> Void in
if (error != nil){
println(error.localizedDescription)
}
var err: NSError?
let parseObj: AnyObject? = NSJSONSerialization.JSONObjectWithData(data, options: NSJSONReadingOptions.AllowFragments, error: &err)
if let json = parseObj as? NSDictionary{
if let response = json["response"] as? NSDictionary{
if let obj = response["Object"] as? NSDictionary{
if let data = obj["data"] as? NSString {
println(data)//work's and i have a data
ViewController().labl.text = data //fatal error: unexpectedly found nil while unwrapping an Optional value
}
}
}
}
})
task.resume()
}
}
对不起FO我的英语
答
对不起,我在我的联想类,所以我无法测试这,但尝试:
import Foundation
import UIKit
我通常这样做是为了防止我在某个时候需要它。此外,如果失败可能会尝试将数据发送给viewcontroller,然后将其应用于label.text。
编辑:你也有这样的:
})
以上task.resume,请查看,看看是否能不能解决问题。
答
问题是当您拨打ViewController()
时,您正在创建ViewController
的新实例。由于您未展示视图控制器,因此它的插座尚未设置,并且是nil
。因此,当您尝试访问labl
(隐式解包可选)时,它等于nil
,并且您的应用程序崩溃。
要解决这个问题,或许pars()
(按惯例使用小写字母的方法)可能会返回数据,然后您可以在您的ViewController
类中使用这些数据。
+0
所以我必须得到标签 - ViewController类中的一些值,然后在Json类中更改我的数据? –
请将您的示例代码缩短为仅包含理解问题所需的内容。 –