JSON 数组 Swift 的索引
Posted
技术标签:
【中文标题】JSON 数组 Swift 的索引【英文标题】:Index of JSON Array Swift 【发布时间】:2015-12-02 21:35:07 【问题描述】:我正在使用这个库来解析返回数组的 API 端点:https://github.com/SwiftyJSON/SwiftyJSON
我正在抓取从 JSON 响应中获取的数组,并尝试将其输入到表格中。
在我的视图控制器中的类被声明后,我有
var fetched_data:JSON = []
在我的 viewDidLoad 方法内部:
let endpoint = NSURL(string: "http://example.com/api")
let data = NSData(contentsOfURL: endpoint!)
let json = JSON(data: data!)
fetched_data = json["posts"].arrayValue
为了喂表,我有:
func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell
let cell: UITableViewCell = self.tableView.dequeueReusableCellWithIdentifier("cell1")! as UITableViewCell
cell.textLabel?.text = self.fetched_data[indexPath.row]
return cell
我在尝试设置单元格 textLabel 时遇到此错误:
Cannot subscript a value of a type ‘JSON’ with an index type of ‘Int’
如何正确执行此操作并使其正常工作?
【问题讨论】:
【参考方案1】:您将fetched_data
声明为JSON
var fetched_data:JSON = []
但您正在为它分配Array
:
fetched_data = json["posts"].arrayValue
让我们将类型更改为AnyObject
的数组:
var fetched_data: Array<AnyObject> = []
然后分配应该是这样的(我们有[AnyObject]
所以我们需要转换):
if let text = self.fetched_data[indexPath.row] as? String
cell.textLabel?.text = text
编辑:您还需要记住分配正确的Array
,通过使用arrayObject
而不是arrayValue
:
fetched_data = json["posts"].arrayObject
【讨论】:
谢谢!现在,在我的 vieDidLoad 方法中,我得到:无法将“[JSON]”类型的值分配给“Array以上是关于JSON 数组 Swift 的索引的主要内容,如果未能解决你的问题,请参考以下文章