1

我想将我的一些应用程序数据存储在 iCloud 中,并且我希望在应用程序进入后台或关闭时将其保存。

我有一MyDocument堂课,是按照这个苹果教程写的。事实上,我这样做:

// 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 同步。我怎样才能做到这一点?

4

1 回答 1

1

退出前,UIDocument检查文件是否hasUnsavedChanges. 如果YES,则调用保存。
您正在applicationDidEnterBackground委托方法中设置文档文本,这可能为时已晚。

从方法文档:

您应该在此方法退出之前执行与调整用户界面相关的任何任务,但其他任务(例如保存状态)应根据需要移动到并发调度队列或辅助线程。因为您在 applicationDidEnterBackground: 中启动的任何后台任务很可能在该方法退出之前不会运行,因此您应该在启动这些任务之前请求额外的后台执行时间。换句话说,首先调用 beginBackgroundTaskWithExpirationHandler: 然后在调度队列或辅助线程上运行任务。

于 2013-01-14T12:35:06.190 回答