解析:如何获取所有 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 任务的主要内容,如果未能解决你的问题,请参考以下文章