根据要求将应用数据与 iCloud 同步
Posted
技术标签:
【中文标题】根据要求将应用数据与 iCloud 同步【英文标题】:Sync app data with iCloud on request 【发布时间】:2013-01-14 12:19:52 【问题描述】:我想将我的一些应用程序数据存储在 iCloud 中,并希望在应用程序进入后台或关闭时将其保存。
我有一个MyDocument
类,是按照this Apple tutorial写的。事实上,我是这样做的:
// this function called from applicationDidEnterBackground
void SaveICloudData( const char *rawData )
MyDocument *doc = AppDelegate.getICloudDocument; // MyDocument is subclass of UIDocument, like in tutorial
NSString *str = [[NSString alloc] initWithUTF8String:rawData];
[doc setDocumentText:str];
我的应用程序进入后台,仅当我再次打开它时才会同步。但我想手动将我的数据与 iCloud 同步。我该怎么做?
【问题讨论】:
【参考方案1】:在退出之前,UIDocument
检查文档是否为 hasUnsavedChanges
。如果YES
,则调用保存。
您正在 applicationDidEnterBackground 委托方法中设置文档文本,这可能为时已晚。
来自方法文档:
您应该执行与调整用户界面相关的任何任务 在此方法退出之前,但其他任务(例如保存状态)应该 根据需要移动到并发调度队列或辅助线程。 因为它可能是您开始的任何后台任务 applicationDidEnterBackground: 在该方法之后才会运行 退出,您应该在之前请求额外的后台执行时间 开始这些任务。换句话说,首先调用 beginBackgroundTaskWithExpirationHandler: 然后在一个任务上运行 调度队列或辅助线程。
【讨论】:
我可以从我的文档类中手动调用saveToUrl
方法吗?
是的,但首选的保存方式是让 UIDocument(或 Mac 上的 NSDocument)决定何时保存。您应该确保在应用程序进入后台之前更新文档的更改计数。
我使用了autosaveWithCompletitionHandler
函数。一切似乎都很好。谢谢!以上是关于根据要求将应用数据与 iCloud 同步的主要内容,如果未能解决你的问题,请参考以下文章