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

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

【问题讨论】:

    标签: ios parse-platform 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 中的商店
    猜你喜欢
    • 2015-03-14
    • 2015-07-24
    • 2012-09-21
    • 2018-07-05
    • 2020-07-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多