我想将一些应用程序数据存储在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同步。我怎么能这样做?
答案 0 :(得分:1)
退出前,UIDocument
会检查文档hasUnsavedChanges
。如果YES
,则调用保存
您正在使用applicationDidEnterBackground委托方法设置文档文本,这可能为时已晚。
从方法docs:
您应该执行与调整用户界面相关的任何任务 在此方法退出之前,但其他任务(如保存状态)应该 根据需要移动到并发调度队列或辅助线程。 因为它可能是你开始的任何后台任务 applicationDidEnterBackground:直到该方法之后才会运行 退出,您应该在之前请求额外的后台执行时间 开始那些任务。换句话说,先打电话 beginBackgroundTaskWithExpirationHandler:然后在a上运行任务 调度队列或辅助线程。