2015-06-05 5 views
0

Это srsly сводит меня с ума.Swift parse frame and closures

Я пытаюсь использовать getFirstObjectInBackgroundWithBlock() метод в быстры, но я не могу понять, как (не) использовать .. УСТРОЙСТВА

Я просто хочу, чтобы получить счет пользователя от сервера синтаксического анализа и я это делаю как это:

func updateScoreForCurrentUser(score: Int){ 
    let user = PFUser.currentUser() 

    // get gameScore for user 
    var query = PFQuery(className: "GameScore") 
    query.whereKey("User", equalTo: user!) 
    query.getFirstObjectInBackgroundWithBlock { (gameScore: PFObject, error: NSError?) -> Void in 
     gameScore["score"] = score 
} 

я просто получить "не может ссылаться на 'getFirstObjectInBackgroundWithBlock' со списком аргументов типа '(? (PFObject ?, NSError) -> Пустота)"

Можете ли вы pleaase мне помочь ? Спасибо

ответ

2

Эта ошибка, которую вы получаете, так же, как вы уже догадались, что вам нужен объект gameScore hvae как необязательный.

"Cannot invoke 'getFirstObjectInBackgroundWithBlock' with an argument list of type '((PFObject?, NSError?) -> Void)'"

Это не из-за стремительности или ограничений. Это потому, что Parse SDK определяет такую ​​функцию. И если Parse не изменит свой API, вам придется использовать необязательный.

И только мои два цента по этому вопросу, необязательно в порядке здесь. Либо вы получите PFObject, либо получите ошибку, а не то, и другое. Таким образом, один из них будет равен нулю, поэтому использование необязательно.

+0

Спасибо, я изменил '(gameScore: PFObject, ошибка: NSError?)' В (gameScore: PFObject ?, error: NSError?) И добавил проверку 'if let theScore: PFObject = gameScore {', и теперь он работает но его все еще немного сложно для меня – kalafun

+0

@kalafun Не волнуйся. Через пару недель это станет вторым инстинктом, и это действительно так. :) –