Есть хук, который перехватывает каждое удаление на бэкенде (beforeDelete
в облачном коде), но, судя по вопросу, похоже, что это неправильное место для перехвата, потому что файл, нуждающийся в удалении, является локальным.
Анализ недавно открыл исходный код SDK. Просмотр кода. Похоже, что в конечном итоге все варианты удаления вызывают deleteInBackground
. Таким образом, одна идея - слишком умная, ИМО - заключалась бы в том, чтобы переопределить только эту. Но я думаю, что было бы неразумно полагаться на этот недокументированный факт.
Если вы управляете вызывающей стороной, одна из идей состоит в том, чтобы просто создать политику, которая никогда не будет вызывать удаление напрямую, и предоставить метод «otuswebDelete» для удаления объекта и файла.
Если вы не контролируете вызывающего абонента (или не доверяете себе, чтобы помнить свою собственную политику), я думаю, вам лучше, в соответствии с вашим текущим дизайном, просто переопределить несколько вариантов:
– delete
– delete:
– deleteInBackground
– deleteInBackgroundWithBlock:
– deleteEventually
Все они могут просто вызвать super
для удаления, а затем вызвать метод в подклассе для удаления локального файла. Не так уж и плохо, имхо.
Наконец, по причинам, слишком многочисленным, чтобы подробно описать их здесь, я имею привычку «обертывать» свои PFObjects (подкласс NSObject
, который имеет свойство PFObject
), а не создавать их подклассы.
Бремя этого подхода заключается в том, что создание средств доступа к свойствам немного утомительно, но взамен я получаю больше контроля над (а) использованием методов SDK (как в вашей проблеме), (б) сериализацией, (c) выборкой управление связанными объектами, (d) больше...
person
danh
schedule
03.11.2015
beforeDelete
иafterDelete
обработчики облачного кода, которые вы можете поместить в класс для обработки любых дополнительных операций очистки, которые могут вам понадобиться. - person Russell   schedule 03.11.2015