Как правильно воссоздать объект в Parse после его удаления?

Я использую Parse для серверной части. И у меня есть табличное представление со списком объектов контактов из Parse. Если пользователь нажимает на объект, он сохраняет его для анализа, а при повторном нажатии удаляет его из анализа.

Для сохранения я использую метод:

- (void)addContact:(Contact *)contact withBlock:(void (^)(void))completion {
    [contact saveInBackgroundWithBlock:^(BOOL succeeded, NSError *error) {
        if (completion) completion();
    }];
}

Для удаления используйте это:

- (void)removeContact:(Contact *)contact withBlock:(void (^)(void))completion {
    [contact deleteInBackgroundWithBlock:^(BOOL succeeded, NSError *error) {
        contact.objectId = nil;
        if (completion) completion();
    }];
}

Я установил для objectId значение nil, потому что я использую это свойство в табличном представлении, чтобы увидеть, находится ли объект уже при анализе его только на телефоне.

Проблема в том, что если пользователь делает такие шаги, как: сохранить, удалить, сохранить.

  1. Сохранить: объект создается на основе анализа всех данных.
  2. Удалить: объект удаляется из анализа.
  3. Сохранить: объект создается при разборе, но без данных (просто objectId).

Это нормальная процедура? На телефоне у объекта всегда есть все данные даже после метода удаления. Поэтому я предполагаю, что если я запусту метод save для объекта со всеми данными, он сохранит его для анализа, даже если тот же объект был удален в прошлом.

Вот изображение одного пустого объекта и одного, который правильно сохранен со всеми данными:введите описание изображения здесь

Каков ваш опыт с этим? Наслаждайтесь решением этой проблемы и помогите сделать мир лучше

1 ответ

Установка идентификатора объекта равным nil, как вы, полагается на частные и недокументированные функции PFObject учебный класс. Даже если это сработало сейчас, это не гарантирует, что всегда будет работать.

Вы не должны либо удалять объект, а просто установить флаг, чтобы показать, что он был удален / удален, и использовать его для своей логики.

Или вы должны на самом деле отказаться от локального объекта после его удаления и создать новый объект с копией значений старых объектов.

Другие вопросы по тегам