这是我关于SO的第一篇文章,所以这里...... 我试图将Alamofire 3.3.1导入Xcode 7.2,Swift 2.1.1。 我已尝试按照此处所述的方式拉入项目:http://cocoadocs.org/docsets/Alamofire/3.3.0/并且还尝试了可可豆荚方法。这两个都导致项目的Alamofire部分中的161个编译错误。
我也尝试过其他提供类似步骤的SO帖子,但他们都归结为将Almofire Xcode项目文件添加到一个项目并添加嵌入式二进制文件。
例如,
.../Alamofire/Source/Request.swift:487:17: error: expected expression in list of expressions
protocol: URL.scheme,
^
.../Alamofire/Source/Request.swift:486:51: error: expected ',' separator
port: URL.port?.integerValue ?? 0,
^
,
.../Alamofire/Source/Request.swift:487:17: error: expected ')' in expression list
protocol: URL.scheme,
我确保目标是正确的(都设置为8.1)。我正在使用的应用程序适用于iOS。
我搜索了Alamofire SO的帖子,并且最近没有看到任何东西,所以我假设有一些我错过的简单步骤。
示例教程我跟随成功构建了旧版本的Alamofire - 2.0 - 我是否应该假设新版本的Alamofire不能与Swift 2.1.1一起使用?
非常感谢。
更新:我想出了这一点 - 更仔细地阅读代码,最新版本的Alamofire使用了#selector,它是在Swift 2.2中引入的(用于Xcode 7.3,El Capitain)。所以你有它。例如,以下代码Manager.swift使用#selector
public override func respondsToSelector(selector: Selector) -> Bool {
#if !os(OSX)
if selector == #selector(NSURLSessionDelegate.URLSessionDidFinishEventsForBackgroundURLSession(_:)) {
return sessionDidFinishEventsForBackgroundURLSession != nil
}
#endif
switch selector {
case #selector(NSURLSessionDelegate.URLSession(_:didBecomeInvalidWithError:)):
return sessionDidBecomeInvalidWithError != nil
case #selector(NSURLSessionDelegate.URLSession(_:didReceiveChallenge:completionHandler:)):
return (sessionDidReceiveChallenge != nil || sessionDidReceiveChallengeWithCompletion != nil)
case #selector(NSURLSessionTaskDelegate.URLSession(_:task:willPerformHTTPRedirection:newRequest:completionHandler:)):
return (taskWillPerformHTTPRedirection != nil || taskWillPerformHTTPRedirectionWithCompletion != nil)
case #selector(NSURLSessionDataDelegate.URLSession(_:dataTask:didReceiveResponse:completionHandler:)):
return (dataTaskDidReceiveResponse != nil || dataTaskDidReceiveResponseWithCompletion != nil)
default:
return self.dynamicType.instancesRespondToSelector(selector)
}
这绝对不会用Swift 2.1编译