【问题标题】:Accessing values in JSON using swift 3使用 swift 3 访问 JSON 中的值
【发布时间】:2017-11-24 21:58:43
【问题描述】:
我正在尝试使用https://api.github.com/users 获取前 30 个 GitHub 用户并将其添加到获取的用户列表中。对于每个用户;显示他们的用户名、头像和仓库数量。
选择用户后,我需要打开另一个屏幕,其中包含他们所有存储库的列表。
如何按照这种 JSON 格式访问 GitHub API 中的嵌套 URL(“repos_url”)?
{
"login": "mojombo",
"id": 1,
"repos_url": "https://api.github.com/users/mojombo/repos"
}
【问题讨论】:
标签:
ios
json
swift
github
【解决方案1】:
// don't forget
import Alamofire
import SwiftyJSON
// initialise variables
var fetchResult = [[String:AnyObject]]()
struct User{
var name:String?
var id:Int?
var repo_url:String
init(name:String,id:Int,repoURL:String){
self.name = name
self.id = id
self.repo_url = repoURL
}
}
let user = [User]
fun getData(){
Alamofire.request("https://api.github.com/users").responseJSON { (responseData) -> Void in
if((responseData.result.value) != nil) {
let response = JSON(responseData.result.value!)
print(response)
if let resData = response.arrayObject {
self.fetchResult = resData as! [[String:AnyObject]]
print(self.fetchResult)
}
for item in self.fetchResult {
print(item)
guard let login = item["login"] as! String else {return}
guard let id = item["id"] as! Int else {return}
guard let repos_url = item["repos_url"] as! String else {return}
let gitUser = User(name: login , id: id, repoURL: repos_url)
self.user.append(gitUser)
}
}
if self.user.count>0{
self()
}
}
一旦你在 tableView 中选择了一行。
使用
在 didSelect 中获取所选项目
func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: IndexPath) {
let selected = user[indexPath.row]
let storyBoard: UIStoryboard = UIStoryboard(name: "Main", bundle: nil)
let newViewController =
storyBoard.instantiateViewController(withIdentifier: "SecondVC") as! SecondVC
newViewController.data = selected
self.navigationController?.pushViewController(newViewController, animated: true)
}
在 SecondViewController 中,您可以访问选定的数据集。