您好
我正在尝试使用Alamofire库来访问Rest API,我遇到的问题如下:
我有以下方法:
func LoadDevices() ->Void{
dispatch_async(dispatch_get_global_queue(priority, 0)) {
// do some task
do{
try self.devices = self.manager.GetDevices(self.identity?.IdentityUser, password: self.identity?.IdentityPassword)!
let lastDeviceConnected = self.manager.RetrieveSharedLastDeviceConnected()
if(self.devices.count > 0 && lastDeviceConnected == nil){
self.manager.SaveSharedLastDeviceConnected(self.devices[0].DeviceNumber!)
self.manager.SaveSharedLastDeviceConnectedObject(self.devices[0])
self.deviceData = try self.manager.GetDeviceData(self.identity?.IdentityUser!, password: self.identity?.IdentityPassword!, deviceNumber: self.devices[0].DeviceNumber!)
if(self.deviceData != nil){
self.manager.SaveSharedDeviceDataJson(DeviceData.DeviceDataToJson(self.deviceData!))
}
}
}catch{
self.devices = [Device]()
}
dispatch_async(dispatch_get_main_queue()) {
self.tableView.reloadData()
}
}
}
在这个方法中我调用了一个方法“GetDevices”,这个方法有以下代码:
func GetDevices(user: String?, password: String?) ->[Device]?{
let myIdentity = RetrieveSharedIdentityObject()
let url = "https://" + (myIdentity?.ServerAccount)! + "/account/account/account/" + (myIdentity?.IdentityAccountNumber)! + "/devices"
var devices : [Device]?
let headers = [
"MMSSession": myIdentity!.ServerAccountToken!,
]
Alamofire.request(.GET, url, headers: headers)
.responseJSON { response in
print(response.data)
let json = JSON(data: response.data!)
print(json)
let device = Device()
devices?.append(device)
}
return devices
}
正如您所看到的,我正在尝试使用Alamofire访问API,但是当我执行此操作时,我没有打印数据,而且我得到了一个例外,因为我得到了一个零值第一种方法。
请对此提供任何帮助,可能有人知道为什么Alamofire代码不起作用。
答案 0 :(得分:2)
接收数据的回调是异步调用的。因此,您需要更新回调中的日期,而不是在调用之后(在收到数据之前会立即返回)。