Это помечено как iOS
, но я уверен, что он может быть полезен и для других SDK Parse. Как вы, возможно, знаете, Parse добавил возможность создания собственных подклассов PFObject
к SDK 10 не так давно. Это отличное дополнение по ряду причин. Во-первых, это позволяет компилятору проверить код путем создания динамических свойств для атрибутов объекта:Методы инициализации для объектов подкласса PFObject, которые сгенерированы с помощью парсера
myObject[@"myAttribute"]
преобразуется в myObject.myAttribute
Во-вторых, что более важно, чтобы этот вопрос, пользовательские подклассы могут иметь дополнительные функциональные возможности. Например, скажем, я создал приложение для сигнализации, которое хранит Alarm
объектов в облаке Parse. В моем пользовательском подклассе я могу переопределить методы , - (void)saveEventually
и - (void)deleteEventually
, чтобы объект alarm
мог планировать/обновлять/удалять UILocalNotification
для себя при создании, модификации или удалении.
Здесь все усложняется, и возникает реальный вопрос. Скажем, пользователь создает сигнал тревоги на одном устройстве (который загружает его в облако), а затем автоматически синхронизирует его с другим устройством. Второе устройство, очевидно, обновляет содержимое в фоновом режиме PFQuery
- (BFTask *)findObjectsInBackground
и затем вызывает на каждом объекте , чтобы убедиться, что все его вещество находится на устройстве. Мой вопрос: какой метод (ы), если он есть, вызывается, когда подкласс PFObject
найден или получен из базы данных облачных вычислений? Что касается объектов, инициализированных из локального хранилища данных?
Как я уже упоминал, переопределение различных методов прекрасно работает для объектов, которые создаются и управляются на устройстве, но я сбив с толку, как можно запускать собственный код из нового объекта, который только что прибыл в память, из локального или удаленный хранилище данных. Любые мысли или предложения о том, как с этим справиться, будут высоко оценены. Документация Parse не охватывает такой случай, поэтому, возможно, это даже не лучшая практика, но мне кажется, что это должно быть. В любом случае, спасибо за ваше время и ваши идеи.