嗨,我有以下方法:迅速alamofire返回值是空
func getAlamoPlayers() ->[Player]{
//Get TeamID
let prefs:NSUserDefaults = NSUserDefaults.standardUserDefaults()
var TeamId:String = prefs.stringForKey("TEAMID")!
//create parameters for POST
let parameters =
["IdTeam": TeamId]
var result: NSArray?
//Request
Alamofire.request(.POST, "XXXXXX.php", parameters: parameters)
.responseJSON { (request, response, json, error) -> Void in
result = (json as NSArray)
// Make models from Json data
for (var i = 0; i < result?.count; i++) {
let dic: NSDictionary = result![i] as NSDictionary
//Create a team object
var p:Player = Player()
//Assign the values of each key value pair to the team object
p.PlayerID = dic["IdPlayer"] as String
p.PlayerName = dic["name"] as String
p.PlayerFkToTeam = dic["teams_IdTeam"] as String
//Add the team to the player array
self.players.append(p)
}
}
return self.players
}
所以,当我在另一个类调用这个方法,玩家阵列是空的!我如何处理alamofire的异步请求?我认为该方法在请求完成之前返回播放器对象,或者我错了吗?
在此先感谢!
好的,我会明天测试这个。如果具有alamofire请求的函数是在一个单独的类中,这有什么关系? – 2015-03-31 21:34:28
这就是为什么你有'YOUR_NOTIFICATION_NAME',以便NSNotificationCenter知道你在说什么通知。所以你想在同一个类中使用'YOUR_NOTIFICATION_NAME','.addObserver'和'YOUR_FUNCTION'。 '.postNotificationName'可以在其他地方被调用。一旦你发布了你的通知,它就会用你放入选择器的名字来调用这个函数。 – boidkan 2015-03-31 22:01:03
我已经通过上面的链接实施了您的解决方案。谢谢,现在它工作正常! – 2015-04-01 16:17:03