不使用框架手动集成 Alamofire 2

Posted

技术标签:

【中文标题】不使用框架手动集成 Alamofire 2【英文标题】:Integrate Alamofire 2 Manually without using Framework 【发布时间】:2015-09-19 14:20:29 【问题描述】:

我最近升级到了 Swift 2 和 XCode 7。 我只是通过在我的项目中复制Alamofire.swift 来使用Alamofire。 但现在我想使用 Alamofire 2,我下载并获得了最新的 Alamofire.swift

我在 Alamofire.swift 中遇到很多错误,例如:

使用未声明的类型“请求”

另外,Method 是 HttpMethods 的枚举,但现在它的 typeAlias 为 COpaquePointer

我知道这可以通过 CocoaPods 完成,但我不想使用框架。 现在最好的集成方式是什么?

P.S.:我想支持 ios 8+

【问题讨论】:

你需要返回一个 NSMutableURLRequest @longbow 我认为不建议更改他们的源代码。而且也很少有其他错误。这是实现我想要做的最好的方式吗? 你不能只包含 Alamofire.swift 文件,你仍然需要整个包。如果方法在 Request.swift 中,Alamofire.swift 应该如何知道“Request”在哪里? 但之前也有同样的效果 【参考方案1】:

您必须从 Alamofire 存储库下载所有 .swift 文件。在 Alamofire 1 和 2 之间,发生了很多变化。例如 RequestresponseJSON 块返回三个东西,NSURLRequest?, NSHTTPURLResponse?,Result<AnyObject> 结构,其 json 数据为 json.valuejson.errorErrorType

以下代码示例展示了如何在 Xcode 7 和 Swift 2 中使用它

var defaultCfg: NSURLSessionConfiguration  
    let cfg = NSURLSessionConfiguration.defaultSessionConfiguration()
    cfg.HTTPCookieStorage = NSHTTPCookieStorage.sharedHTTPCookieStorage()
    cfg.HTTPCookieAcceptPolicy = NSHTTPCookieAcceptPolicy.Always
    cfg.URLCache = nil
    cfg.HTTPAdditionalHeaders = ["User-Agent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.10; rv:40.0) Gecko/20100101 Firefox/40.0", "Accept-Language":"en-US,en;q=0.5"]
    return cfg

self.mngr = Manager(configuration: cfg)
    self.mngr.request(.GET, url,parameters:parameters)
        .responseJSON  (req, res, json) in
            if(json.error != nil) 
              //  NSLog("Error: \(error)")
                failure(res, json.value, someerroryouset)
                return

            
            else 
                let jsond = JSON(json.value!)

【讨论】:

有关 Alamofire 2.0 中的更改的更多信息github.com/Alamofire/Alamofire/blob/master/Documentation/…

以上是关于不使用框架手动集成 Alamofire 2的主要内容,如果未能解决你的问题,请参考以下文章

什么是Xcode中的嵌入式二进制文件?

没有这样的模块“Alamofire”

我正在尝试使用 Alamofire 框架。如果我尝试导入 Alamofire,我的 xcode 会显示如下错误

Jenkins Xcode 构建 alamofire 错误

自我学习SSM框架集成

AlamofireNetworkActivityIndi​​cator 不工作