如何在swift中设置Alamofire调用值的类变量?

时间:2016-06-23 04:48:55

标签: ios swift alamofire

我是iOS开发的新手,我有一个用于从服务器检索数据的类。我想将Alamofire请求中的值存储为类变量,以便与后续请求一起使用。我知道Alamofire请求有完成处理程序,但我仍然不清楚这些是如何工作的。

push( &head, data ) 中,我想将setSessionID中的字符串存储到generateNewSessionID中。这显然不是正确的方法,因为我在print语句中得到一个unwrapped nil可选错误。

sessionID

我已经查看了其他示例,但我无法看到如何在班级范围内完成此任务。

2 个答案:

答案 0 :(得分:0)

setSessionID中,如果您检查if error != nil这意味着如果错误处理它,那么您应该像这样更改

if error == nil {
   // No error
   self.sessionID = session
} else {
   //handle Error
}

答案 1 :(得分:0)

您实际上是在完成块之外打印sessionID,这意味着它正在尝试在网络请求完成之前打印该值。您需要将其移动到完成块中,如下所示:

 func setSessionID() {
    generateNewSessionID() { (error, session) in
        if error != nil {
            // handle error
        } else {
            self.sessionID = session
        }

        // moved print here
        print(self.sessionID!)
    }
}

当然,您应该防止会话可能为零的可能性:

guard let id = self.sessionID else {
    return
}

print(id)

但假设不是,第一个代码块应该可以工作。