1

我创建了一个全新的 Swift 项目,然后在其中添加了以下podfile内容

platform :ios, '8.0'
use_frameworks!

target 'LifeStream' do
pod 'SSKeychain'
pod 'LiveSDK'
pod 'Alamofire', '~> 1.2'
end

target 'LifeStreamTests' do
pod 'SSKeychain'
pod 'LiveSDK'
pod 'Alamofire', '~> 1.2'
end

然后我运行 pod Install 来创建我的工作区。完成后,我编译了项目,但在 AlamoFire 框架中收到以下编译器错误。

无法使用“CFString!”类型的索引为“[String : AnyObject]”类型的值下标

无法使用“CFString!”类型的索引为“[String : AnyObject]”类型的值下标

无法使用“CFString!”类型的索引为“[String : AnyObject]”类型的值下标

对于以下代码Manager.swift

if let info = NSBundle.mainBundle().infoDictionary {
    let executable: AnyObject = info[kCFBundleExecutableKey] ?? "Unknown"
    let bundle: AnyObject = info[kCFBundleIdentifierKey] ?? "Unknown"
    let version: AnyObject = info[kCFBundleVersionKey] ?? "Unknown"

我还在同一个文件中收到了其他几个编译器错误,例如

可选类型“NSURLSessionConfiguration?”的值 未拆封;你的意思是用'!' 或者 '?'?

self.session = NSURLSession(configuration: configuration, delegate: delegate, delegateQueue: nil)

调用中缺少参数 #2 的参数

completionHandler(sessionDidReceiveChallenge!(session, challenge))

Request.swift 中还有其他一些编译器错误。我的问题是,这些是 Swift 2.0 中所做更改的结果吗?如果是这样,是否有关于 Alamofire 何时修复和发布这些问题的 ETA?

4

4 回答 4

2

我知道它很旧,但你可以这样做:

String(kCFBundleVersionKey)
于 2016-01-11T10:26:21.063 回答
1

错误消息告诉您您使用的类型不能用于下标。 kCFBundleExecutableKey和朋友是CFStringRef文字。您应该NSString使用将它们转换为对象

kCFBundleExecutableKey as NSString

等等

或者您可以简单地使用它们定义为的字符串值:

"CFBundleExecutable"
"CFBundleIdentifier"
"CFBundleVersion"
于 2015-06-27T09:23:09.807 回答
1

答案是使用Alamofire Swift-2github 上的新分支。我调整了我的 podfile

pod 'Alamofire', :git => 'https://github.com/Alamofire/Alamofire.git', :branch => 'swift-2.0'

并重新安装了吊舱。完成后,我可以毫无问题地构建项目。

于 2015-06-27T22:05:14.583 回答
0

您应该将 Almofire 更新为 Swift-2

您可以使用以下方法修复这些行:

let executable = String(info[kCFBundleExecutableKey as String]) ?? "Unknown"
            let bundle = String(info[kCFBundleIdentifierKey as String]) ?? "Unknown"
            let version = String(info[kCFBundleVersionKey as String]) ?? "Unknown"
            let os: AnyObject = NSProcessInfo.processInfo().operatingSystemVersionString ?? "Unknown"

但我建议您更新库 Almofire

于 2016-02-17T18:53:44.207 回答