PFUser currentUser не сохраняется в iOS7

Я использую приведенный ниже код, чтобы сохранить текущего пользователя, вошедшего в систему, с настраиваемым полем. Я разрешаю пользователю заполнить информацию, а затем сохранить. Я использовал оба метода сохранения в своем собственном потоке с помощью GCM и использовал метод saveInBackgrounWithBlock. В iOS8 это работает нормально, но в iOS7 сохранение никогда не происходит, и блок завершения никогда не вызывается. Любые идеи? Спасибо

       if PFUser.currentUser() != nil {
            PFUser.currentUser().setObject(installation, forKey: "installation")
            PFUser.currentUser().saveInBackgroundWithBlock({ (bool: Bool, error: NSError?) -> Void in
                if(error != nil) {
                    let alert = UIAlertView(title: "Problem Saving", message: "Make sure you are connecte to the internet and try again", delegate: nil, cancelButtonTitle: "OK")
                    alert.show();
                }
            })
        }

Обновление 1: я заметил, что удаление приложения временно решает проблему. Однако после выхода из системы и входа в систему с другим пользователем (т. е. при смене текущего пользователя) проблема возникает снова.

Обновление 2: проблема, похоже, каким-то образом связана с PFInstallation. Использование addUniqueObject вызывает проблемы. После вызова этого метода перестают работать любые сохранения iOS7. Даже на PFUser. PFUser имеет настройку установки и наоборот. Массив из них.

Обновление 3: похоже, что это не только addUniqueObject, но и любой setObject в PFInstallation.currentInstallation. Помощь!


person ChrisBorg    schedule 10.05.2015    source источник


Ответы (2)


вы также должны проверить свой первый параметр (isSuccess):

if (bool == YES && error != nil) -> success
else -> failure
person yonivav    schedule 10.05.2015
comment
приложение даже не доходит до первого оператора if для проверки. он зависает прямо при сохранении. только что заметил, что удаление приложения временно решает проблему. кажется, что это происходит после выхода и входа в систему с другим пользователем. то есть PFUser currentUser изменяется. Обновление вопроса - person ChrisBorg; 10.05.2015

Мне потребовалось много времени, чтобы понять, и хотя я так и не нашел решения самой проблемы, я нашел обходной путь. Я сохранял currentUser в currentInstallation и currentInstallation в currentUser. Это вызывало проблемы при сохранении. Я также сохранил каналы в currentInstallation, отправив массив каналов напрямую вместо использования addUniqueObject.

    let installation = PFInstallation.currentInstallation()
    installation.channels = channels;
    installation.saveInBackground()
person ChrisBorg    schedule 30.05.2015