1

アプリに iCloud 同期を追加しています。私のUIManagedDocumentストアはサンドボックスにあり、その変更ログは iCloud (で指定NSPersistentStoreUbiquitousContentURLKey) にあります。問題は、 2 番目のデバイスで初めてアプリをインストールして実行するときに、最初の同期を行う (1 番目のデバイスで作成された更新をプルする) のに何分もかかることです。その同期は明らかに内部で行われているため、これは実際の問題ですUIManagedDocument:saveToURL:completionHandler。そのため、完了ハンドラー ブロックが呼び出されるまでに長い時間がかかり、返さUIManagedDocumentれる前にアクセスするとUIManagedDocument:saveToURL、当然のことながらクラッシュが発生します。

データベースをすばやく開き、バックグラウンドで同期を実行したいと考えています。どうすればいいですか?

4

2 に答える 2

3

はい、2 台目のデバイスでの最初の同期には 90 秒以上かかる場合があります (iOS 7)。UIManagedDocument のインスタンスを作成する iOS 7 アプリのオープンソースの例があります。https://github.com/DonBriggs/MultiDocumentPlusUUIDを参照してください。まず、2 つのデバイスで動作しているアプリのスクリーンショットをご覧ください。スクリーンショットで問題が解決されている場合は、自分でアプリを試してコードを確認してください。フィードバックをお待ちしております。

于 2013-10-03T16:12:35.733 に答える
0

「データベース」に言及し、この質問に CoreData のタグを付けました。ただし、CoreData データベースとは異なる方法で同期される UIManagedDocument を参照しています。データベースが CoreData の場合は、新しい NSManagedObjectContext 同時実行 API で初期化します。を見てみましょう:

[[NSManagedObjectContext alloc] initWithConcurrencyType:NSMainQueueConcurrencyType];

これを使用して CoreData データベースを非同期に同期することに成功しましたが、UIManagedDocuments にどの程度適用できるかはわかりません。

于 2012-05-19T05:54:08.313 に答える