【发布时间】:2015-04-26 18:26:50
【问题描述】:
其他人可以帮助我知道哪种方法可以快速调用函数并接收 JSON 集合响应吗? 我在 viewController.swift 中调用 ApiClient().getList() 函数,该函数调用我的 API 并在 apiClient.swift 中接收 JSON 响应,最后我想将此 JSON 响应分配给 viewController 中的 self.result 变量。快。
我的代码是:
viewController.swift
import UIKit
class ClubsViewController: UIViewController, UITableViewDataSource{
var results: [JSON]? = []
@IBOutlet var tableview:UITableView!
override func viewDidLoad() {
super.viewDidLoad()
self.loadClubsObjects()
}
func loadClubsObjects(){
self.results = ApiClient().getList() <--- here is the call
self.tableview.reloadData()
}
func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
return self.results?.count ?? 0
}
func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
var cell = tableView.dequeueReusableCellWithIdentifier("clubsObjectCell") as! ClubsTableViewCell
cell.clubsObject = self.results?[indexPath.row]
return cell
}
}
ApiClient.swift
import Foundation
import Alamofire
class ApiClient {
func getList() -> [JSON] {
var URL = NSURL(string: "https://api.com/v1/clubs")
var mutableURLRequest = NSMutableURLRequest(URL: URL!)
mutableURLRequest.setValue("Content-Type", forHTTPHeaderField: "application/json")
mutableURLRequest.HTTPMethod = "GET"
mutableURLRequest.setValue("Bearer R01.iNsG3xjv/r1LDkhkGOANPv53xqUFDkPM0en5LIDxx875fBjdUZLn1jtUlKVJqVjsNwDe1Oqu2WuzjpaYbiWWhw==", forHTTPHeaderField: "Authorization")
let manager = Alamofire.Manager.sharedInstance
let request = manager.request(mutableURLRequest)
request.responseJSON { (request, response, json, error) in
if (json != nil){
var jsonObj = JSON(json!)
if let data = jsonObj["hits"].arrayValue as [JSON]?{
return data
}
}
}
}
apiClient.swift 中的错误是
返回数据 -> [JSON] 不能转换为 Void
【问题讨论】:
-
您的函数返回 Void。检查
func getList(completion:(data: JSON?, error: NSError?) -> Void)无需进一步检查,此函数至少应返回 [JSON] -
我刚刚更新了 getList() 函数,现在我只得到一个错误,返回数据 -> [JSON] 不能转换为 Void,我该如何解决这个问题?
-
替换 ->Void 为 -> [JSON]