【发布时间】:2015-03-19 10:56:24
【问题描述】:
这是用iOS 标记的,但我相信它对其他 Parse SDK 也很有用。您可能知道,Parse 不久前向iOS SDK 添加了创建本机PFObject 子类的功能。出于多种原因,这是一个很好的补充。首先,它允许编译器通过为对象属性创建动态属性来检查您的代码:
myObject[@"myAttribute"] 转换为myObject.myAttribute
其次,对这个问题更重要的是,自定义子类可以增加功能。例如,假设我创建了一个警报应用程序,它将 Alarm 对象存储在 Parse 云上。在我的自定义子类中,我可以覆盖+ (instancetype)object、- (void)saveEventually 和- (void)deleteEventually 方法,以便alarm 对象可以在创建、修改或删除时为自己安排/更新/删除UILocalNotification。
这就是事情变得复杂的地方,我的实际问题出现了。假设用户在一台设备上创建了一个警报(将其上传到云端),然后将其自动同步到另一台设备。第二个设备显然在后台使用PFQuery 的- (BFTask *)findObjectsInBackground 更新其内容,然后在每个对象上调用- (BFTask *)fetchIfNecessaryInBackground 以确保其所有内容都在设备上。我的问题是:当从 Parse 云数据库中找到/获取 PFObject 子类时,会调用什么方法(如果有)?那么,从本地数据存储区初始化的对象呢?
就像我提到的,重写各种方法非常适合在设备上创建和管理的对象,但我很困惑如何从刚刚从本地或远程到达内存的新对象中运行自定义代码数据存储。任何有关如何处理此问题的想法或建议将不胜感激。 Parse 文档没有涵盖这种情况,因此它甚至可能不是最佳实践,但在我看来它应该是。无论如何,感谢您的宝贵时间和见解。
【问题讨论】:
标签: ios objective-c parse-platform subclass pfobject