【发布时间】:2015-06-18 14:23:06
【问题描述】:
我正在使用 Parse 构建一个 iOS 应用程序。当保存任何类型的任何数据时,我希望能够执行操作。特别是在通用保存上,而不是在特定保存操作之后,因为这意味着每次通过我的应用保存时都会这样做。
有可能吗?
即
解析触发的任何保存事件。
保存完成后执行操作。
【问题讨论】:
标签: ios objective-c parse-platform save
我正在使用 Parse 构建一个 iOS 应用程序。当保存任何类型的任何数据时,我希望能够执行操作。特别是在通用保存上,而不是在特定保存操作之后,因为这意味着每次通过我的应用保存时都会这样做。
有可能吗?
即
解析触发的任何保存事件。
保存完成后执行操作。
【问题讨论】:
标签: ios objective-c parse-platform save
一些纯粹主义者认为这有点像 hack,但这是一个可以通过 Swizzling 方法解决的问题。本质上,你用你自己的方法替换了一个类的方法。在这种情况下,您将替换 Parse 保存方法以使它们能够发送事件并执行其原始功能。
我在Github 上有一个 Swizzling 方法的工作示例
此示例代码增强了 UIViewController 并将日志记录功能添加到 viewWillAppear: viewDidAppear: viewWillDisappear: 和 viewDidDisappear 方法。但是您可以在需要注入功能的任何地方使用它。
【讨论】:
您有两个选择,您可以使用 Cloud Code 并编写一个 afterSave 钩子,该钩子将在每次保存时触发。这将在 Parse 服务器上运行,您可以在逻辑更改方面快速移动,因为不需要客户端更新来更改其背后的逻辑。但是,这些功能仅限于运行 3 秒,因此您需要非常快速,并且不应在此处执行任何大规模操作。详情请查看Cloud Code documentation。
另一种方式,如果您真的想在设备上执行此操作,请在每次保存操作后触发NSNotification,创建一个监听此通知的类并在保存后执行所需的任何操作。也可以在这里查看NSNotification 上的 Apple 文档。
【讨论】:
尝试在 PFObject 上创建一个类别并创建自定义保存
- (void) customSave {
[self save]
//custom function
}
您需要为您打算使用的每个 PFObject 保存命令执行此操作
【讨论】:
[object save],而是调用[object customSave]。不确定这是否是您要找的。span>
[object save],而是到处调用[object customSave],这有什么更好的?请解释你的答案。
-(void) customSave { [super save]; /* your special save */ }吗?