不能下标一个值

时间:2015-06-27 05:39:12

标签: alamofire swift2 xcode7-beta2

我创建了一个全新的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 个答案:

答案 0 :(得分:2)

我知道它已经老了,但你可以这样做:

String(kCFBundleVersionKey)

答案 1 :(得分:1)

错误消息告诉您正在使用不能用于下标的类型。 kCFBundleExecutableKey和朋友是CFStringRef文字。您应该使用

将它们转换为NSString对象
kCFBundleExecutableKey as NSString

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

"CFBundleExecutable"
"CFBundleIdentifier"
"CFBundleVersion"

答案 2 :(得分:1)

答案是在github上使用新的rollapply(RET,1:nrow(RET), mean.geometric) 分支。我调整了podfile

Alamofire Swift-2

并重新安装了pod。一旦完成,我就能够毫无问题地构建项目。

答案 3 :(得分: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