我正在使用Parse构建一个iOS应用。当任何数据被保存时,我希望能够执行一个操作。特别是在一般的保存上,而不是在特定的保存操作后,因为这意味着在每次保存时都要通过我的应用程序来执行这个操作。
这可能吗?
即
解析任何被触发的保存事件。
在保存完成后执行操作。
有些纯粹主义者认为这有点像黑客,但这是个问题,可以用方法Swizzling来解决。本质上,你用自己的方法替换一个类的方法。在这种情况下,你将替换Parse保存方法,使它们能够发送事件以及执行它们原来的功能。
我有一个关于Swizzling方法的工作示例,它是在 Github
这个示例代码增强了UIViewController,并为viewWillAppear: viewDidAppear: viewWillDisappear:和viewDidDisappear方法添加了日志功能。但你可以在任何需要注入功能的地方使用这个方法。
你在这里有两个选择,你可以使用云代码,然后写一个 afterSave
钩子,将在每次保存时被触发。这将在Parsse服务器上运行,你可以在逻辑变化方面快速移动,因为不需要客户端更新来改变背后的逻辑。然而,这些功能最多只能运行3秒,所以你需要非常快,不应该在这里进行任何大规模的操作。检查 云代码文档 了解详情。
另一种方式,如果你真的想在设备上做,可以开一个 NSNotification
在每次保存操作后,创建一个类来监听这个通知,并在保存后执行任何需要的操作。在这里,也可以查看苹果的文档 NSNotification.
尝试在PFObject上创建一个类别,并创建一个自定义的保存。
- (void) customSave {
[self save]
//custom function
}
您需要为您打算使用的每一条PFObject保存命令做这样的操作。