解析:如何获取所有 saveEventually 任务

Posted

技术标签:

【中文标题】解析:如何获取所有 saveEventually 任务【英文标题】:Parse: How get all saveEventually tasks 【发布时间】:2015-10-06 21:23:54 【问题描述】:

我在我的 ios 应用程序中使用 Parse。 在我的应用程序中,我使用了很多 saveEventually() 函数将数据存储在 Parse 中,而无需可用的 Internet 连接。 我知道 saveEventually() 返回一个 BFTask 对象。 是否可以获取所有创建的任务以便在任何给定时刻检查它们的状态?此外,是否可以在应用重启后使用相同的技术? 谢谢!

【问题讨论】:

【参考方案1】:

Parse 使用 Boltz 框架,作为回报,您将在完成时拥有一个 BFTask 对象。

例子:

    yourPFObject.saveEventually().continueWithBlock 
          (task: BFTask!) -> BFTask in
       if task.isCancelled() 
           // the save was cancelled.
        else if task.error() 
        // the save failed.
        else 
          // the object was saved successfully.
          var object = task.result() as PFObject
       
    

考虑到这一点,您可以通过将已完成的任务存储在 coredata 中来检查它们的状态。在 appDelegate applicationDidBecomeActive 或 didFinishLaunchingWithOptions 中,您可以尝试根据您的逻辑从 coredata 中检索它们。

当然,如果您只想跟踪状态,您可以保存在字典中并存储在 NSUserDefault 中。这完全取决于您的选择和需求。

更多示例可以在此链接中找到:https://github.com/BoltsFramework/Bolts-iOS

【讨论】:

我的目标是在一段时间后或应用重启后检查任务状态的变化(已完成)。如果我将 BFTask 保存在 NSUserDefault 中,我可以检查状态更改吗? 您在“NSUserDefault”中添加一个标志,并在每次调用“applicationDidBecomeActive”时检查该标志。就像我提到的那样,实现,无论是在 NSUserDefault/CoreData 中以及您要存储的数据类型完全取决于您。 不可能在 NSUserDefault 中保存 BFTask 对象数组,因为数组的内容必须是“属性列表”类型或 NSdata 类型。而且我无法在 NSData 中进行转换,因为需要子类 BFTask 才能使用 initWithCoder 方法。 developer.apple.com/library/ios/documentation/Cocoa/Reference/…: 您不必“直接”将 BFTask 保存为 NSUserDefault。也就是说,您可以将 BFTask 的任务设置为其原始类型,例如 String,并将其保存在那里。这完全取决于逻辑和您想要实现的目标。 实际上,我没有提到任何关于在 NSUserDefaults 中保存 BFTask 的内容。如果您正确阅读了我的答案,我建议保留 值字典NSUserDefault 中的商店

以上是关于解析:如何获取所有 saveEventually 任务的主要内容,如果未能解决你的问题,请参考以下文章

SaveEventually 离线行为

解析保存最终无法正常工作

如何从解析中获取所有注册用户

REST 查询从解析服务器获取特定用户的所有角色

使用 SAX 解析器时如何获取父节点?

如何从 JavaScript 中的字符串中获取所有数字? [复制]