我是 Swift 和 JSON 的新手,所以如果这很愚蠢,请多多包涵。我正在尝试快速解析这个特定的 JSON http://jsonplaceholder.typicode.com/users。我可以通过键入http://jsonplaceholder.typicode.com/users/1来获取一个用户的值,但问题是,它一次只为我提供一个用户的值。我正在寻找一种方法来一次性获取所有用户的价值。
我正在使用 SwiftyJSON API。
这是我一直在使用的代码:
// RestApiManager.swift
import Foundation
typealias ServiceResponse = (JSON, NSError?) -> Void
class RestApiManager: NSObject{
static let sharedInstance = RestApiManager()
let baseURL = "http://jsonplaceholder.typicode.com/users/"
func getUser(onCompletion: (JSON) ->Void){
makeHTTPGetRequest(baseURL, onCompletion: {json, err -> Void in onCompletion(json)})
}
func makeHTTPGetRequest(path: String, onCompletion: ServiceResponse){
let request = NSMutableURLRequest(URL: NSURL(string: path)!)
let session = NSURLSession.sharedSession()
let task = session.dataTaskWithRequest(request, completionHandler: { data, response, error in
let json:JSON = JSON(data: data)
onCompletion(json, error)
})
task.resume()
}
}
这是我的 MasterViewController.swift 类
//
// MasterViewController.swift
//
//
import UIKit
class MasterViewController: UITableViewController {
var objects = [AnyObject]()
var contactsData = NSMutableArray() //array that will hold all the contact details.
override func awakeFromNib() {
super.awakeFromNib()
}
override func viewDidLoad() {
super.viewDidLoad()
getContactListJSON()
}
func getContactListJSON(){
RestApiManager.sharedInstance.getUser { json -> Void in
let user: AnyObject = json["id"].object
self.contactsData.addObject(user)
println(self.contactsData)
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
// Dispose of any resources that can be recreated.
}
// MARK: - Table View
override func numberOfSectionsInTableView(tableView: UITableView) -> Int {
return 1
}
override func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
return contactsData.count
}
override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
var cell = tableView.dequeueReusableCellWithIdentifier("CELL", forIndexPath: indexPath) as? UITableViewCell
return cell
}
}