嗨,大家好,我一直被卡住的錯誤'數組索引超出範圍'。我從互聯網獲取JSON數據並將其轉換爲數組。我一直在加載評論(注:我發佈了這個問題,因爲我無法找到任何問題與我的問題有關)陣列索引超出範圍iOS
所以我一直在加載註釋在jsonData中。我一直用來加載評論的代碼是這樣的。
api.loadComments(shot.commentsUrl, completion: didLoadComments)
完成的代碼是這樣的。
func didLoadComments(comments : [Comment]){
self.comments = comments
self.tableView.reloadData()
}
它在定義的tableView ...
let cell = tableView.dequeueReusableCellWithIdentifier("Cell10", forIndexPath: indexPath) as! CommentCell
//This is where the error occurs
let comment = comments[indexPath.row]
cell.nameLabel.text = comment.user.name
cell.commentLabel.text = comment.body
cell.avatarImageView.sd_setImageWithURL(NSURL(string: comment.user.avatarUrl), placeholderImage: UIImage(named: "2"))
return cell
和評論變量的定義如下。如圖所示,日誌
The log which shows comments is not nil
爲loadComments的代碼是在此
var comments : [Comment] = Comment
的loadComments
方法正在返回的意見。
func loadComments(commentsUrl: String, completion: (([Comment]) -> Void)!) {
let urlString = commentsUrl + "?access_token=" + Config.ACCESS_TOKEN
let session = NSURLSession.sharedSession()
let url = NSURL(string: urlString)
let task = session.dataTaskWithURL(url!) {
(data, response, error) -> Void in
if error != nil {
print(error!.localizedDescription)
} else {
var comments = [Comment]()
do {
let commentsData = try NSJSONSerialization.JSONObjectWithData(data!, options: .MutableContainers) as! NSArray
for commentData in commentsData {
let comment = Comment(data: commentData as! NSDictionary)
comments.append(comment)
}
}
catch {
}
let priority = DISPATCH_QUEUE_PRIORITY_DEFAULT
dispatch_async(dispatch_get_global_queue(priority, 0)) {
dispatch_async(dispatch_get_main_queue()) {
completion(comments)
}
}
}
task.resume()
}
numberOfRowsInSection看起來像這樣。
override func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
// #warning Incomplete implementation, return the number of rows
return 9 + comments.count
}
隨意問我任何更多的代碼。
在此先感謝 雅利安
如果它表示索引超出範圍,請打印您的'indexPath.row'並在錯誤發生時檢查它。 –
調查這個最簡單的方法是放置一個斷點。然後,您可以檢查並驗證「comments」是否是您期望的那樣... – Alladinian
您在哪裏調用loadComments函數? – emresancaktar