【问题标题】: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 中,您可以访问选定的数据集。

【讨论】:

  • 感谢您的支持,但您的项目未提供有关用户拥有多少个存储库的信息。它应该来自字典:“repos_url”:“api.github.com/users/mojombo/repos”。我的问题是我应该如何访问这些数据?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-03-28
  • 2020-06-25
  • 1970-01-01
  • 1970-01-01
  • 2017-03-26
  • 1970-01-01
相关资源
最近更新 更多