我对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)!")
}
我希望你能帮助我。 最好的问候和提前感谢!
答案 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
}