Как правильно воссоздать объект в 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, потому что я использую это свойство в табличном представлении, чтобы увидеть, находится ли объект уже при анализе его только на телефоне.
Проблема в том, что если пользователь делает такие шаги, как: сохранить, удалить, сохранить.
- Сохранить: объект создается на основе анализа всех данных.
- Удалить: объект удаляется из анализа.
- Сохранить: объект создается при разборе, но без данных (просто objectId).
Это нормальная процедура? На телефоне у объекта всегда есть все данные даже после метода удаления. Поэтому я предполагаю, что если я запусту метод save для объекта со всеми данными, он сохранит его для анализа, даже если тот же объект был удален в прошлом.
Вот изображение одного пустого объекта и одного, который правильно сохранен со всеми данными:
Каков ваш опыт с этим? Наслаждайтесь решением этой проблемы и помогите сделать мир лучше
1 ответ
Установка идентификатора объекта равным nil, как вы, полагается на частные и недокументированные функции PFObject
учебный класс. Даже если это сработало сейчас, это не гарантирует, что всегда будет работать.
Вы не должны либо удалять объект, а просто установить флаг, чтобы показать, что он был удален / удален, и использовать его для своей логики.
Или вы должны на самом деле отказаться от локального объекта после его удаления и создать новый объект с копией значений старых объектов.