Ошибки при использовании PFUser.getCurrentUserInBackground()

#ios #swift #parse-platform #pfuser #parse-ios-sdk

#iOS #swift #синтаксический анализ-платформа #pfuser #синтаксический анализ-ios-sdk

Вопрос:

Я использую Parse и PFUser в приложении Swift для iOS и сталкиваюсь с тем, что PFUser.current() делает не совсем то, что я хочу, из-за проблем с синхронизацией.

По этой причине я пытаюсь использовать: PFUser.getCurrentUserInBackground().

Я начал с приведенного ниже кода, вдохновленный тем, что можно найти здесь:https://github.com/BoltsFramework/Bolts-ObjC.

Но этот документ, вероятно, немного устарел, он не совсем работает.

 let userCheckTask = PFUser.getCurrentUserInBackground()
userCheckTask.continueWith {
    (task: BFTask!) -> BFTask<AnyObject> in
    if task.isCancelled() { // Error-1.
        // the save was cancelled.
    } else if task.error != nil {
        // the save failed.
    } else {
        // the object was saved successfully.
        var object = task.result() as PFObject // Error-2.
    }
}
  

Компилятор выдает мне две ошибки, эта в строке с пометкой «Ошибка-1»

 Cannot invoke 'isCancelled' with no arguments
  

И этот другой в строке с пометкой «Ошибка-2»

 Expression type 'PFUser?' is ambiguous without more context
  

Я понятия не имею, какой аргумент ‘isCancelled’ ожидает.

Кто-нибудь знает, как это исправить?

Комментарии:

1. Замените AnyObject на PFUser.

2. Спасибо за предложение. Я только что попытался заменить AnyObject на PFUser, и я все еще получаю точно такие же 2 ошибки.

Ответ №1:

 let userCheckTask = PFUser.getCurrentUserInBackground()
userCheckTask.continueWith {
    (task: BFTask) -> BFTask<AnyObject> in
    if let e = task.error {
        return BFTask(error: e)
    } else {
        return BFTask(result: task.result)
    } 
}
  

Комментарии:

1. Я действительно не получаю первую ошибку, заменяющую при выполнении «task.isCancelled()» на «task.isCancelled» , но я получаю другую, используя ваш код: «Отсутствует возврат в закрытии, которое, как ожидается, вернет ‘BFTask<PFUser>'».

2. Да, вы должны вернуть объект PFUser.

3. Какова инструкция для этого? «возврат ???». Другими словами, что вы подразумеваете под «объектом PFUser» в этом контексте?

4. ОК. Спасибо, по крайней мере, теперь он компилируется. Мне нужно попытаться посмотреть поближе, чтобы увидеть, решает ли это мою проблему.

5. Я пробовал код, но, насколько я вижу, от него мало пользы. Это проходит через ветку успеха еще до того, как я успеваю войти в систему. Поскольку я рассчитывал на это, чтобы получить учетные данные, это работает не так, как я ожидал. Или я делаю что-то неправильно.