根据要求与iCloud同步应用数据

时间:2013-01-14 12:19:52

标签: ios objective-c icloud

我想将一些应用程序数据存储在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 个答案:

答案 0 :(得分:1)

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

从方法docs:

  

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