Swift 中的 Json Api 管理器 [英] Json Api Manager in Swift

查看:21
本文介绍了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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆