[iOS]Swift-Alamofire 4.0 使用初探

1、关于Alamofire 4.0 引用问题
在使用这个库之前我尝试把这个库的Source文件夹拖到自己的项目工程中,然后写入 import Alamofire,编译不通过,报下面的错误:
Alamofire 引入报错

后来查阅资料,发现这个库的引用有点类似于引用静态库的其中一种方式,就是把静态库的项目文件拖到需要引用的项目,然后在对应的target中生成.a或framework。

注意:
1、向项目中拖入第三方库工程,确保第三方库工程是关闭的,不然添加不进去哦
2、编译对应的target后,需要在TARGETS->General->Embeded Binaries 中加入Alamofire.framework***
如下图:
添加Alamofire.framework

2、基本使用。这个就比较简单了,下面贴下代码。

import UIKit
/* 如果引用不了下面这句就 build一下 */
import Alamofire

class ViewController: UIViewController {

     let BaiduURL = "http://apis.haoservice.com/lifeservice/cook/query?"

    override func viewDidLoad() {
        super.viewDidLoad()

        /* 基础的请求 及JSON数据解析 */
        Alamofire.request("https://api.500px.com/v1/photos").responseJSON { (DataResponse) in
            print(DataResponse.data)
            if let Json = DataResponse.result.value{
                print("Json:\(Json) ")
                // NSData->NSDictonary
                let dic = try? JSONSerialization.jsonObject(with: DataResponse.data!, options: JSONSerialization.ReadingOptions.allowFragments) as! [String: Any]
                let status = dic? ["status"]
                print("status is \(status)")
            }
        }

        self.getData()
        self.postData()
    }

    func getData(){
        let parameters: Dictionary = ["key" : "93c921ea8b0348af8e8e7a6a273c41bd"]
        Alamofire.request("http://apis.haoservice.com/weather/city", method:.get, parameters:parameters).responseJSON { (response) in
            switch response.result {
            case .success:
                print("SUCCESS")
            case .failure:
                print("ERROR")
            }
        }
    }

    func postData() {
        // POST
        let parameters: Dictionary = ["key" : "93c921ea8b0348af8e8e7a6a273c41bd"]
        Alamofire.request("http://apis.haoservice.com/weather/city", method: .post,  parameters:parameters) .responseJSON {response  in
            print("result==\(response.result)")

            if let jsonValue = response.result.value {
                /*
                 error_code = 0
                 reason = ""
                 result = 数组套字典的城市列表
                 */
                print("code: \(jsonValue)")
            }
        }
    }
}

这里顺带提一个疑问:Any 和 AnyObject 的区别。
在上面的JSON数据转成Dictionary的时候,我是这样写的:
let dic = try? JSONSerialization.jsonObject(with: DataResponse.data!, options: JSONSerialization.ReadingOptions.allowFragments) as! [String: Any]

这里最后的as![String: Any],其实也是可以写成:as! [String: AnyObject]的,
在《The Swift Programming Language 中文版》中提到:
• Any 可以表示任何类型,包括函数类型。
• AnyObject 可以表示任何类类型的实例。
个人觉得这个地方写成Any是比较妥当的,但是写成AnyObject在Swift3.0中也是支持的,所以这两者这方面差别很小。

——–2017.2.16日更新———
真机报错:Library not loaded: @rpath/Alamofire.framework/Alamofire
解决方法:如下图
这里写图片描述

阅读更多

没有更多推荐了,返回首页