0

私はiCloud互換アプリに取り組んでおり、ファイルがアップロード/ダウンロードされているかどうか、またはそれが完了したかどうかを検出する方法を研究しています. これはやなどのNSURL「キー」で検出できることがわかりました。私はまだプログラミングの学習に取り組んでいますが、これらのキーは何ですか? それらを使用してファイルのステータスを検出するにはどうすればよいですか (ファイルの iCloud へのアップロードが完了したか、ダウンロードが完了したか (デバイスがどちら側にあるか) をアプリに認識させたい)。NSURLUbiquitousItemIsDownloadingKeyNSURLUbiquitousItemIsUploadingKey

これらのキーの状態を照会するために使用できると読んだresourceValuesForKeys:error:ので、これを IF ステートメントに入れて、「はい」または「いいえ」などの結果が期待されるかどうかを確認しますか? ご協力いただきありがとうございます。

if ([destination resourceValuesForKeys:[NSArray arrayWithObject:NSURLUbiquitousItemIsUploadingKey] error:NULL]) {

    //is uploading??

}
4

1 に答える 1

2

提案されたコードはほとんど実行可能に見えますが、1 つのことresourceValuesForKeys:error:として、キーが渡された定数と同じであり、値がそれらのキーのドキュメントで指定されている辞書を返します。の場合NSURLUbiquitousItemIsUploadingKey、値は値をNSNumberラップするインスタンスBOOLです。

だから...ユビキタスコンテナ内のアイテムを指しているとdestination仮定します:NSURL

NSError *error;
NSArray *keys = [NSArray arrayWithObject:NSURLUbiquitousItemIsUploadingKey];
NSDictionary *values = [destination resourceValuesForKeys:keys error:&error];
if (values == nil)
    NSLog(@"error: %@", error);
else if ([[values objectForKey:NSURLUbiquitousItemIsUploadingKey] boolValue])
    NSLog(@"uploading");
else
    NSLog(@"not uploading");

1 つのキーのみを照会する場合は、 を使用getResourceValue:forKey:error:してもう少し簡潔にすることができます。

于 2012-07-03T19:55:12.560 に答える