包装可选值的问题

时间:2017-03-12 08:47:05

标签: json swift tableview nib wrapping

我对Swift很新,我目前在包装可选值方面遇到了一些问题。 从我的博客下载JSON后我的应用程序崩溃(下载工作正在定义),错误:fatal error: unexpectedly found nil while unwrapping an Optional value

我不知道如何解决这个问题。 这是代码:

class ViewController: UIViewController, UITableViewDelegate, UITableViewDataSource {
@IBOutlet var tableView: UITableView!

var postsarray : [SDPost] = []
var hasloaded = false
var HUD = MBProgressHUD()

override func viewDidLoad() {
    super.viewDidLoad()

     self.tableView.register(UINib(nibName: "UICustomTableViewCell", bundle: nil), forCellReuseIdentifier: "cell")

    HUD = MBProgressHUD.showAdded(to: self.view, animated: true)
    HUD.detailsLabel.text = "Daten werden geladen"
    HUD.label.text = "Moment bitte."

    self.tableView.register(TableCellTableViewCell.self, forCellReuseIdentifier: "cell")
}
override func viewDidAppear(_ animated: Bool) {
    let feed = SDFeedParser();
    let url = "www.pathtomyblog.net"

    tableView.isHidden = true
    feed.parseURL(url, success: { (Array:[Any]?, Int) in
        if (Array != nil)
        {
        self.postsarray = Array as! [SDPost]
        self.tableView.isHidden = false
        self.hasloaded = true
        self.tableView.reloadData()
        print("Data loaded.")
        }
        self.HUD.hide(animated: true, afterDelay: 0.1)
    }) { (Error) in
        print("Something went wrong." + (Error?.localizedDescription)!)
    }

}


func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
    return self.postsarray.count;
}
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
    var cell:TableCellTableViewCell = self.tableView.dequeueReusableCell(withIdentifier: "cell")! as! TableCellTableViewCell

    if (hasloaded){
    var post_info = SDPost()
    post_info = postsarray[indexPath.row]
    cell.articel_title.text = post_info.title;

    return cell
    }
    return cell
}
func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
    print("You selected cell #\(indexPath.row)!")
}

我希望你能帮助我。 最好的问候和提前感谢!

1 个答案:

答案 0 :(得分:0)

首先尝试阅读Swift语言syntaxes。使用力展开!如果你没有检查你打开或铸造什么,这是非常危险的。

尝试使用这种基本语言方法:

if let roomCount = john.residence?.numberOfRooms {
    print("John's residence has \(roomCount) room(s).")
} else {
    print("Unable to retrieve the number of rooms.")
}

guard let image = UIImage(named: imageName) else { 
    return
}