从 SwiftyJSON API 分配解析的 JSON 显示错误
Posted
技术标签:
【中文标题】从 SwiftyJSON API 分配解析的 JSON 显示错误【英文标题】:Assigning parsed JSON from SwiftyJSON API shows error 【发布时间】:2016-02-11 18:49:15 【问题描述】:我最近从 Objective-C 更新到 Swift,在以本机方式解析 JSON 时确实令人困惑,因此在 *** 上搜索时,我发现了 SwiftyJSON API,它真的很酷。将解析的 JSON 值分配给标签时出现错误。我已将结果存储在一个数组中,但在 tableview 上显示它时显示错误。
//Array where I store the parsed JSON
var categoryCount = [Int]()
override func viewDidLoad()
super.viewDidLoad()
// Do any additional setup after loading the view.
getData()
func getData()
Alamofire.request(.GET, "http://www.artively.com/api/MobileApi/get_parent_category")
.responseJSON response in
if let value = response.result.value
let json = JSON(value)
self.parseJSON(json)
func parseJSON(json: JSON)
for result in json["data"].arrayValue
print("The count are",result["product_count"].int!)
self.categoryCount.append(result["product_count"].int!)
print("The category count are", categoryCount.count)
最后,当我执行这段代码时,应用程序崩溃了:
cell.countLable.text = "\(categoryCount[indexPath.row])"
//Error appear in above code
这是 JSON 结果:
"responsecode": "200",
"responsemsg": "Successfull",
"data": [
"pk_category_id": 60,
"category_name": "Collage",
"category_logo": "http://www.artively.com//Upload/category_logo/28102015163738_collage_icon.png",
"category_logo_selected": "http://www.artively.com//Upload/category_logo/28102015163738_collage_icon.png",
"product_count": 10
,
"pk_category_id": 65,
"category_name": "Contemporary",
"category_logo": "http://www.artively.com//Upload/category_logo/28102015163521_contempory_icon.png",
"category_logo_selected": "http://www.artively.com//Upload/category_logo/28102015163521_contempory_icon.png",
"product_count": 242
,
...So on
在上面的响应中,我已经解析了“product_count”的值,将它存储在一个数组中并显示在一个 tableview 单元格中,但是应用程序崩溃了......
【问题讨论】:
崩溃说明了什么? 小建议。问题的标题应该与问题的内容有关。请编辑您的问题的标题。 1 - EXE_BAD_INSTRUCTION(代码 = EXC_I386_INVOP,子代码 = 0X0)。 2- 数组索引超出范围。这就是 XCode 显示的错误 您正在寻找一个不在数组中的对象。 这一行 categoryCount[indexPath.row] 仅在 indexPath.row 小于数组计数时才有效。 【参考方案1】:解析后你应该调用self.tableView.reloadData()
。然后还要确保您正在实现此方法:
override func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int
return self.categoryCount.count
这将确保行数与数组中的元素一样多,因此indexPath.row
不会超出数组边界。
【讨论】:
以上是关于从 SwiftyJSON API 分配解析的 JSON 显示错误的主要内容,如果未能解决你的问题,请参考以下文章
iOS:从 Alamofire 解析的 SwiftyJSON 是一个数组。尝试解析时为空