Swift 中的 Json Api 管理器 [英] Json Api Manager in Swift
本文介绍了Swift 中的 Json Api 管理器的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我目前正在 Swift 中开发 Api 管理器,到目前为止我得到了什么:
Hi there i am currently working on a Api Manager in Swift, what i got so far:
import Foundation
import CoreData
import Alamofire
import SwiftyJSON
class ApiManager {
var data: NSArray = []
func getApi() -> NSArray {
let user:String = "user"
let password:String = "password"
Alamofire.request(.GET, "http://localhost/api/")
.authenticate(user: user, password: password)
.responseJSON{ (request, response, jsonData, error) in
if let jsonData1 = jsonData {
if let jsonData2 = JSON(jsonData1).dictionaryObject {
self.data = jsonData2["data"] as! NSArray
}
}
}
return data
}
}
JSON Api 是正确的,但我的 swift 代码有问题,但我不确定它是什么,
The JSON Api is correct, but there is something wrong with my swift code, but i am not sure what it is,
当我打电话给这位经理时:
When i call this manager:
let response = ApiManager().getApi()
println(response)
我只是得到了空括号:
(
)
有人可以帮我解决这个问题吗?
Anybody could help me with this?
推荐答案
使用 URLSession 你可以像这样编写你的 APIManager 类
using URLSession you can write your APIManager class like this
import UIKit
import SwiftyJSON
class APIManager: NSObject {
let baseURL = "https://jsonplaceholder.typicode.com"
static let sharedInstance = APIManager()
static let getPostsEndpoint = "/posts/"
func getPostWithId(postId: Int, onSuccess: @escaping(JSON) -> Void, onFailure: @escaping(Error) -> Void){
let url : String = baseURL + APIManager.getPostsEndpoint
let request: NSMutableURLRequest = NSMutableURLRequest(url: NSURL(string: url)! as URL)
request.httpMethod = "GET"
print("Request ",request)
let session = URLSession.shared
let task = session.dataTask(with: request as URLRequest, completionHandler: {data, response, error -> Void in
if(error != nil){
onFailure(error!)
} else{
do {
let data = try JSON(data: data!)
print("\n Success data ",data)
onSuccess(data)
} catch let error as NSError {
print("Error ",error)
}
}
})
task.resume()
}
}
//并在您的控制器中使用 api 调用和响应的写入定义,如下所示
// and to use write definition for api call and response in your controller as follows
func getGETAPIData(){
APIManager.sharedInstance.getPostWithId(postId:1, onSuccess: { json in
DispatchQueue.main.async {
print("data in list view:",String(describing: json))
}
}, onFailure: { error in
print("error2 :")
})
}
//并调用此方法为
self.getGETAPIData()
这篇关于Swift 中的 Json Api 管理器的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文