美文网首页
xcode 8.0 的bug

xcode 8.0 的bug

作者: vcvit | 来源:发表于2016-09-29 14:41 被阅读34次

    这几天开始学习UIViewController, UITableViewDataSource, UITableViewDelegate,发现一个xcode比较坑爹的bug,运行错误居然不会报错。调试了很久,才发现这个问题,初始化变量的时候,尽量不要使用nil

    最开始声明一个变量,var books:JSON = nil 调用numberOfRowsInSection 后,返回self.books.count本来应该报错,但是xcode没有报错,模拟器也直接白屏,最后想了很久才找到这个问题,初始化的时候应该使用var books:JSON = [],否则nil没法进行count,但是这个在xcode并不会报错。坑爹。

    
    import UIKit
    import Alamofire
    import SwiftyJSON
    import MBProgressHUD
    import ESPullToRefresh
    
    class ViewController: UIViewController,UITableViewDataSource,UITableViewDelegate {
        
        let identifierBookCell = "NormalCell"
        let url = "https://api.douban.com/v2/movie/search"
        let tag = "爱情"
        var books:JSON = []
        
        
        @IBOutlet weak var tableView: UITableView!
        
        override func viewDidLoad() {
            super.viewDidLoad()
            
            self.tableView.dataSource = self
            self.tableView.delegate = self
            
        
            self.tableView.es_addPullToRefresh {
                [weak self] in
                Alamofire.request((self?.url)!, method: .get, parameters: ["tag":(self?.tag)!,"start":0,"count":10],encoding: URLEncoding.default).responseJSON {
                    response in
                    
                    switch response.result {
                    case .success:
                        
                        self?.books = JSON(response.result.value)["subjects"]
                        print (JSON(response.result.value))
                        self?.tableView.reloadData()
                        self?.tableView.es_stopPullToRefresh(completion: true)
                    case .failure(let error):
                        print(error)
                    }
                    
                }
            }
        }
        
        func numberOfSections(in tableView: UITableView) -> Int {
                return 1
            }
        
        func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
            print (self.books.count)
            return self.books.count
        }
        
        func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
            let bookCell = tableView.dequeueReusableCell(withIdentifier: identifierBookCell, for: indexPath) as! BookCell;
            bookCell.configureWithBook(book: books[indexPath.row])
            return bookCell
            
        }
    
        override func didReceiveMemoryWarning() {
            super.didReceiveMemoryWarning()
            // Dispose of any resources that can be recreated.
        }
        
        
    }
    

    相关文章

      网友评论

          本文标题:xcode 8.0 的bug

          本文链接:https://www.haomeiwen.com/subject/daokyttx.html