Json Api Swift经理 [英] Json Api Manager in Swift
本文介绍了Json Api Swift经理的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
您好,我目前正在Swift中从事Api Manager的工作,
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是正确的,但是我的快速代码出了点问题,但是我不确定它是什么,
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)
我只是得到空括号:
(
)
有人可以帮我吗?
推荐答案
使用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()
这篇关于Json Api Swift经理的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文