2

ここでは、ドキュメント ストレージ用のローカル ルートを作成しましたが、iCloud を実装したいので、iCloud ルートを作成する必要があります。また、iCloud が利用可能かどうかを確認します。メソッドのようなものを作成できれば。ここにローカルルートメソッドコードを追加しました

- (NSURL *)localRoot {

if (_localRoot != nil) {
    return _localRoot;
}


NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);

NSString *documentsDirectory = [paths objectAtIndex:0];

NSString *artdirectoryPath = [documentsDirectory stringByAppendingPathComponent:@"/Me"];


_localRoot=[[NSURL alloc]initFileURLWithPath:artdirectoryPath];


return _localRoot;
  }
4

1 に答える 1

0

次を使用してiCloudの「ルート」ディレクトリを見つけます。

NSURL *url = [[NSFileManager defaultManager] URLForUbiquityContainerIdentifier:nil];

アプリのユビキタス コンテナーが 1 つしかない場合はnil、引数として渡すことができます。それ以外の場合は、コンテナー識別子を渡す必要があります。

これを使用して、iCloud がアプリで利用できるかどうかを確認することもできます。返された場合はnil、iCloud を使用できません。ただし、しばらくブロックされる可能性があるため、可用性を確認する最良の方法ではありません。迅速で非ブロッキングのチェックを行うには、次を使用します。

id token = [[NSFileManager defaultManager] ubiquityIdentityToken];

そしてNSUbiquityIdentityDidChangeNotification、可用性が変更された場合に備えて、必ず観察してください。

ただし、ドキュメントに iCloud を使い始めるには、これでは不十分です。そのディレクトリ内のファイルを読み書きするだけで、iCloudに正しいことをさせることはできません。最低限必要なものは次のとおりです。

  • NSMetadataQueryクラウド サーバーに存在するが、ローカルにダウンロードされていないドキュメントを検索します。
  • -[NSFileManager startDownloadingUbiquitousItemAtURL:error:]メタデータ クエリで見つかったドキュメントのダウンロードを開始するように iCloud に指示します。
  • による調整されたアクセスNSFileCoordinator、および による変更の通知NSFilePresenter

Apple には、これに役立つ多くのドキュメントと WWDC からのビデオがあります。

于 2013-02-20T18:47:33.880 に答える