Ios 当我试图重新加载数据()时,我遇到了崩溃

Ios 当我试图重新加载数据()时,我遇到了崩溃,ios,swift,uitableview,Ios,Swift,Uitableview,当我尝试重新加载tableview时,会出现如下错误 libc++abi.dylib:以NSException类型的未捕获异常终止 MyUITableViewController class NewTableViewController: UITableViewController { var videos = [Video]() { didSet { self.tableView.reloadData() //error here } } l

当我尝试重新加载tableview时,会出现如下错误

libc++abi.dylib:以NSException类型的未捕获异常终止

My
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
     }
}

确保在设置
视频时,您正在
主队列中调用它

当您在
主队列上设置时,可以保护
视频

dispatch_async(dispatch_get_main_queue()) {
   self.videos = newest.videos!
}
或者您可以在以下条件下对其进行保护:

didSet {
    dispatch_async(dispatch_get_main_queue()) {
        self.tableView.reloadData()
    }
}

libc++abi.dylib:以NSException类型的未捕获异常终止
错误,可以通过任何方式发生

  • 出口中删除引用
  • performsguewithidentifier中的坏名称
  • iActions
    类型

检查此项以获取更多信息

@DmitrievichR Not in get,因为您希望在设置变量(didSet)时重新加载数据,哦Not get{}我的意思是didSet{},但当
var videos=[Video](){didSet{dispatch\u async(dispatch\u get\u main\u queue())时,我现在也会崩溃也没关系{self.tableView.reloadData()}}}
然后您可以检查是否正确设置了插座。检查您的IBS还有一种可能发生此错误的方法,对我来说,就是在调用中忽略了某些内容
let cancelAction=UIAlertAction(标题:nil,样式:.Cancel){action in…
。即使
title
参数的类型为
String?
也不应使用
nil
(在运行Xcode 8和Swift 2.3传统模式时)。有些东西在中时是
nil
,实际上不应该是。快乐狩猎。自从Xcode 8以来,这个错误消息对我来说是最令人困惑的。我的示例的工作代码是使用实际的
字符串
让cancelAction=UIAlertAction(标题:“取消”,样式:。取消){action in…
didSet {
    dispatch_async(dispatch_get_main_queue()) {
        self.tableView.reloadData()
    }
}