我是iOS开发的新手,我有一个用于从服务器检索数据的类。我想将Alamofire请求中的值存储为类变量,以便与后续请求一起使用。我知道Alamofire请求有完成处理程序,但我仍然不清楚这些是如何工作的。
在push( &head, data )
中,我想将setSessionID
中的字符串存储到generateNewSessionID
中。这显然不是正确的方法,因为我在print语句中得到一个unwrapped nil可选错误。
sessionID
我已经查看了其他示例,但我无法看到如何在班级范围内完成此任务。
答案 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)
但假设不是,第一个代码块应该可以工作。