Невозможно удалить верхний объект синтаксического анализа в Swift

Я пытаюсь создать функцию, которая позволяет пользователю удалять свой пост (PFObject), когда он нажимает кнопку корзины. Я следил за документацией Parse, но не могу заставить ее работать. Может кто-нибудь сказать мне, что я делаю неправильно, и как я могу это исправить. Заранее спасибо!

вот код:

var currentObject : PFObject?

@IBAction func trashTapped(sender: AnyObject) {

    if let object = currentObject {
        object.deleteInBackground()
    }
    self.dismissViewControllerAnimated(true, completion: nil)
}

person David Villegas    schedule 04.11.2015    source источник
comment
текущий объект связан с текущим контроллером представления? Возможно, его планируется удалить, но вы освобождаете текущий объект (следовательно, объект) до того, как он выполнит свою работу в фоновом режиме?   -  person Oleg Shanyuk    schedule 04.11.2015
comment
Вероятно, вам следует удалить это в блоке, чтобы вы знали, было ли оно успешно удалено или нет, и только после этого отклонить контроллер представления. Удалить в конечном итоге лучше работает для объектов, которые были найдены в запросах, поскольку, как сказал @OlegShanyuk, объект может быть освобожден до того, как произойдет удаление с помощью этого метода. Я действительно удивлен, что вы не сталкиваетесь с внутренними ошибками несоответствия.   -  person pbush25    schedule 04.11.2015
comment
@OlegShanyuk текущий объект привязан к текущему VC, однако я думаю, что вы правы в том, что currentObject освобождался, потому что он не знал, какой конкретный объект удалить.   -  person David Villegas    schedule 04.11.2015
comment
@ pbush25 с этой настройкой я не столкнулся с внутренними ошибками, он просто ничего не делал, а закрывал ВК. Однако я попытался удалить объект в блоке, и это сработало отлично, спасибо за помощь, ребята!   -  person David Villegas    schedule 04.11.2015
comment
@DavidVillegas в блоке может работать, так как блок сохраняет внешние ссылки. В любом случае, этот подход является плохим дизайном. Лучше иметь внешнюю зависимость для списка объектов. Таким образом, вы можете безопасно показывать/закрывать viewControllers   -  person Oleg Shanyuk    schedule 04.11.2015


Ответы (1)


Вы должны использовать deleteInBackgroundWithBlock, а затем закрыть контроллер представления внутри этого блока после его завершения, однако убедитесь, что вы вызываете dismissViewControllerAnimated в основном потоке.

person Swinny89    schedule 04.11.2015
comment
Спасибо, удаление объекта в блоке сработало отлично! - person David Villegas; 04.11.2015