1

アプリケーション データの一部を iCloud に保存したいのですが、アプリケーションがバックグラウンドに移行するときやシャットダウンするときに保存したいと考えています。

このAppleチュートリアル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 に答える