解析,保存操作(在设备上)

Posted

技术标签:

【中文标题】解析,保存操作(在设备上)【英文标题】:Parse, Action on Save (On Device) 【发布时间】:2015-06-18 14:23:06 【问题描述】:

我正在使用 Parse 构建一个 ios 应用程序。当保存任何类型的任何数据时,我希望能够执行操作。特别是在通用保存上,而不是在特定保存操作之后,因为这意味着每次通过我的应用保存时都会这样做。

有可能吗?

    解析触发的任何保存事件。

    保存完成后执行操作。

【问题讨论】:

【参考方案1】:

一些纯粹主义者认为这有点像 hack,但这是一个可以通过 Swizzling 方法解决的问题。本质上,你用你自己的方法替换了一个类的方法。在这种情况下,您将替换 Parse 保存方法以使它们能够发送事件并执行其原始功能。

我在Github 上有一个 Swizzling 方法的工作示例

此示例代码增强了 UIViewController 并将日志记录功能添加到 viewWillAppear: viewDidAppear: viewWillDisappear: 和 viewDidDisappear 方法。但是您可以在需要注入功能的任何地方使用它。

【讨论】:

【参考方案2】:

您有两个选择,您可以使用 Cloud Code 并编写一个 afterSave 钩子,该钩子将在每次保存时触发。这将在 Parse 服务器上运行,您可以在逻辑更改方面快速移动,因为不需要客户端更新来更改其背后的逻辑。但是,这些功能仅限于运行 3 秒,因此您需要非常快速,并且不应在此处执行任何大规模操作。详情请查看Cloud Code documentation。

另一种方式,如果您真的想在设备上执行此操作,请在每次保存操作后触发NSNotification,创建一个监听此通知的类并在保存后执行所需的任何操作。也可以在这里查看NSNotification 上的 Apple 文档。

【讨论】:

【参考方案3】:

尝试在 PFObject 上创建一个类别并创建自定义保存

- (void) customSave 
   [self save]
   //custom function

您需要为您打算使用的每个 PFObject 保存命令执行此操作

【讨论】:

不确定这实际上是如何解决问题的。请您提供更多详细信息 而不是在项目中的任何地方调用[object save],而是调用[object customSave]。不确定这是否是您要找的。​​span> 我不明白你所做的一切就是做到这一点,而不是到处调用[object save],而是到处调用[object customSave],这有什么更好的?请解释你的答案。 你不能子类保存-(void) customSave [super save]; /* your special save */ 吗?

以上是关于解析,保存操作(在设备上)的主要内容,如果未能解决你的问题,请参考以下文章

在 Android 设备上保存解析安装记录时未经授权

操作系统-第6章习题解析

设备上的内存警告,而不是仪器

将文件保存在设备存储上

推送通知有效负载未保存在某些设备上

解析查询包装错误,在设备上的模拟器崩溃时工作正常