var first_name = ""
func problemFunc() {
FBRequestConnection.startForMeWithCompletionHandler { (connection: FBRequestConnection!, result: AnyObject!, error: NSError!) -> Void in
if let fbGraphUserDict = result as? Dictionary<String, AnyObject>{
first_name = fbGraphUserDict["first_name"] as NSString
println(first_name)
}
}
}
PFFacebookUtils.logInWithPermissions(permissions, {
(user: PFUser!, error: NSError!) -> Void in
if user == nil {
NSLog("Uh oh. The user cancelled the Facebook login.")
} else if user.isNew {
NSLog("User signed up and logged in through Facebook!")
} else {
NSLog("User logged in through Facebook!")
problemFunc() // error is here
}
})
Ten kod znajduje się wewnątrz przycisku @Ibaction. Nie mogę zbudować, ponieważ wywołanie metody problemFunc() wyzwala komunikat o błędzie w tytule tego wpisu. Jeśli przeniesię definicję first_name var do parametru problemFunc, będzie działać poprawnie. Ale potrzebuję go, ponieważ inna funkcja będzie musiała uzyskać dostęp do jego wartości. Naprawdę nie jestem pewien, co powoduje ten problem, jeśli masz wskazówkę, pomóż.Brak odniesienia do funkcji lokalnej przy przechwytywaniu z innej funkcji lokalnej (Swift)
dzięki, działa, ale z jakiegoś powodu musiałem usunąć: ->() –
Dzięki wielkie! Dobry pomysł, aby uniknąć tej brzydkiej rzeczy – iiFreeman