xcode - Alamofire 无法执行响应关闭

标签 xcode swift alamofire

Mac OS X 10.11.3 El-Capitan、XCode 7.2.1、来自 Carthage 的 Alamofire 3.5.1

试图获得我能想到的最基本的 Alamofire 示例。虽然我是一名经验丰富的开发人员,但我是 XCode 的新手,所以我确信我只是缺少一些基本的东西。我设置了一个新项目,通过 Carthage 添加了 Alamofire,在 main.swift 中添加了一个简单的获取请求。代码构建并运行,但我的响应闭包中没有任何内容被调用。我添加了 sleep 以尝试并确保等待足够长的时间来调用闭包。我打开了 Little Snitch,看到我的项目正在调用 httpbin.org。我尝试了多种 response* 方法。但是闭包永远不会运行,我错过了什么?

主.swift

import Alamofire

print("Start")
var x : String = "main"

Alamofire.request(.GET, "https://httpbin.org/get")
  .responseString {resp in
    print("in response handler")
    print("response \(resp)")
    x = "response"
}

sleep(90)
print("End \(x)")

控制台输出

Start
End main

X代码

xcode screenshot

最佳答案

我认为 Alamofire 默认情况下会调用主队列中的响应处理程序,因此如果您在主队列/线程中发出请求、 sleep 和打印,则在应用程序终止之前不会从主队列执行 responseString。不知道 .responseString,但使用 .response 可以指定队列:

public func response<T: ResponseSerializerType>(
        queue queue: dispatch_queue_t? = nil,
        responseSerializer: T,
        completionHandler: Response<T.SerializedObject, T.ErrorObject> -> Void)
        -> Self

关于xcode - Alamofire 无法执行响应关闭,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35211138/

相关文章:

ios - 将字符串与数组一起传递,但使用 Alamofire 在 swift 中将字符串读取为 null

iphone - 在cocos2D中触摸 Sprite 会导致我的应用崩溃

ios - 两个对象没有相互接触,但 contactTestBetween() 返回结果

ios - Xcode 5//iOS 6 和 7//TDD : OCUnit or XCTest

ios - 尽管文件位于 Documents 目录中,但资源路径返回 nil 文件路径

swift - 如何 NSKeyedUnarchiver.unarchiveObject

json - Swift Alamofire JSON 响应有括号

json - 使用 NSJSONSerialization 从 json 响应构建对象

xcode - 如何在 Xcode 项目包中排除图像文件,有条件地用于发布版本?

iphone - iOSscrollview.bounces 使应用程序在 iOS 4.x 上崩溃