当我尝试重新加载tableview时,我收到类似
的错误libc ++ abi.dylib:以NSException类型的未捕获异常终止
我的UITableViewController
class NewTableViewController: UITableViewController {
var videos = [Video]()
{
didSet {
self.tableView.reloadData() //error here
}
}
let URL = "https://api.vid.me/channel/1/new"
override func viewDidLoad() {
super.viewDidLoad()
let request = Alamofire.request(.GET, self.URL)
request.responseObject { (response: Response<NewestVideos, NSError>) in
switch response.result {
case .Success(let newest):
self.videos = newest.videos!
case .Failure(let error):
print("Request failed with error: \(error)")
}
}
}
override func didReceiveMemoryWarning() {super.didReceiveMemoryWarning()}
override func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int {return self.videos.count}
override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCellWithIdentifier("Cell", forIndexPath: indexPath) as! NewTableViewCell
let video = videos[indexPath.row]
cell.newVideoNameLabel?.text = video.completeUrl != nil ? video.completeUrl! : "nil"
return cell
}
}
我认为线程有问题吗?
在我的应用中,我发出了.get请求,如果我尝试在didSet
中打印print(self.videos)
,我会得到一个值
我尝试添加
dispatch_async(dispatch_get_main_queue()) {
self.tableView.reloadData()
}
答案 0 :(得分:1)
确保在设置videos
时,您在Main Queue
当您登录videos
时,您可以保护Main Queue
:
dispatch_async(dispatch_get_main_queue()) {
self.videos = newest.videos!
}
或者您可以在以下情况下保护它:
didSet {
dispatch_async(dispatch_get_main_queue()) {
self.tableView.reloadData()
}
}
答案 1 :(得分:1)
libc++abi.dylib: terminating with uncaught exception of type NSException
错误,从任何方面发生。
outlet
performSegueWithIdentifier
IBActions
类型。检查此link以获取更多信息