美文网首页
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