問題タブ [uidocument]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
ios - デバイス間でiCloudのドキュメントの削除を検出する適切な方法は?
監視しているドキュメントの削除を検出する明確な方法が見つかりません(アプリが気にするドキュメントのリストをキャッシュします)。
デバイス1の場合:ドキュメントを削除すると、
これはDevice1で正常に機能し、すべてが同期されたままになります。NSMetadataQuery
デバイス2の場合:通知に依存しようとしていました:
最初のファイルリストは、NSMetadataQueryDidFinishGatheringNotification
ドキュメントの追加/変更で問題なく機能します。NSMetadataQueryDidUpdateNotification
Device1でファイルを削除すると、奇妙な結果が得られます。NSMetadataQueryDidUpdateNotification
すべてのドキュメント(削除されたものを除く)がリストされた状態で更新が行われます。不足しているファイルが削除されたこと、または更新が削除されたことをどのように検出するのかわかりません。通知はその目的のためでした
質問1:何をチェックする必要がありますか?
NSFilePresenter
私はiCloudURLのとして登録するという別のルートを試しました:
そのURLのファイルが変更されると、プロトコルを介して呼び出されるようになりNSFilePresenter
ましたが、コールバックがあいまいなため、ロジックを実行して欠落しているドキュメントを特定するのは非常に遅くなります。私が返す唯一の呼び出しは- (void)presentedItemDidChange;
、を介してコールバックを取得することを期待していたことですが、- (void)accommodatePresentedSubitemDeletionAtURL:(NSURL *)url completionHandler:(void (^)(NSError *errorOrNil))completionHandler
このメソッドは呼び出されません。
質問2:それを機能させる方法はありますか?
objective-c - UIDocument saveToURL:深刻なラグを引き起こします
UIDocumentsaveToURL:forSaveOperation:completionHandler:
は非同期であると想定されていますが(ドキュメントでは、バックグラウンドキューでこのアクションを実行すると記載されています)、これを呼び出すと、コードに7〜10秒の遅延が発生します。
コードは次のとおりです。
そしてコンソール:
呼び出しが非同期の場合、なぜこのような大きな遅延があるのですか?ありがとう
objective-c - UIDocument openWithCompletionHandler は成功の場合は NO を返します
私はこのコードを持っています:
なぜこれが NO を返すのでしょうか? 私にとっては、たとえ私の
メソッド、私は常にYESを返しています。
ありがとう
iphone - デバイスで openWithCompletionHandler が返されない
別のデバイスを使用して作成された iCloud から UIDocument を開こうとすると、奇妙な動作に遭遇します。openWithCompletionHandlerを呼び出すと、完了しません。
動作を再現する方法は次のとおりです。
- iPad で新しい UIDocument を作成し、iCloud に保存しました
- 次に、同じアプリを削除しましたが、iPhoneから
- iPhone で XCode からアプリを実行します
- アプリが削除されたので、今のところiPhoneはきれいです
- 初めて iPhone でアプリを実行すると、openWithCompletionHandlerメソッドが呼び出され、ハングして何も起こりません。openWithCompletionHandler操作の終了後に実行するコードを含むブロックに到達しません。
新しい UIDocument を作成し、iPhone から iCloud に保存する場合にのみ機能します。次に、同じ手順 (1 ~ 5) を実行すると、iPad でも同様の動作が発生します。
私が持っているソースコードは次のとおりです。
誰かが同様の問題に遭遇しましたか?
また、以下の方法を使用してファイルを手動でダウンロードしようとしましたが、それでも同じ動作です...
どうもありがとう!
ios - ビューが読み込まれる前に iCloud からドキュメントを読み込む
iCloudに画像があり、それらのUIDocumentをサブクラス化しました。ViewControllerがロードされた後、UITableViewに画像を表示したいと思います。viewDidLoad
だから私はメソッド内にこのコードを追加しました
ここでは、すべての画像を 1 つずつ収集しNSMutableArray *arrayOfImages
、その配列を- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
メソッドで使用しています。ただし、別のスレッドでダウンロードしているため、表には表示されません。画像がダウンロードされた後、またはデフォルトの画像が設定された後にのみ、それを修正して UITableView の表示を開始するにはどうすればよいですか?
icloud - NSMetadataQueryに保存したドキュメントのフォルダをパッケージとして表示させるにはどうすればよいですか?
ローカルとiCloudの両方でドキュメントを保存およびロードするアプリを書いています。ローカルでは問題なく動作していますが、iCloudに問題があります。
ドキュメントはパッケージとして保存されます。UIDocumentは、画像ファイル、サムネイルファイル、および情報plistを含むNSFileWrapperの読み取りと書き込みを行います。ドキュメントをiCloudに保存してから、「ストレージの管理」の下にあるファイルを見ると、パッケージではなく個々のファイルが表示されます。さらに重要なことに、NSMetadataQueryを使用してファイルを検索すると、パッケージではなく、個々のファイルごとにNSMetadataItemが返されます。その結果、私のアプリはロードするパッケージがあることに気づかず、iCloudはかなり役に立たない。
ドキュメントタイプを設定してUTIを正しくエクスポートすると、パッケージが適切に処理されると思いました。そうでしたか?もしそうなら、パッケージとしてドキュメントタイプを設定するためのチェックリストは何ですか?私は持っています:
- ドキュメントタイプを追加しました
- LSTypeIsPackageをYESに設定します(文字列YESとbool YESを試しました)
- CFBundleTypeExtensionsを1つの文字列を含む配列に設定します:ファイルサフィックス
- LSHandlerRankをOwnerに設定します
- 同じ識別子でUTIをエクスポートしました
- com.apple.packageに準拠するように設定します
- キーpublic.filename-extensionの配列を含むUITypeTagSpecificationディクショナリを追加しました。この配列には、ファイルサフィックスという1つの文字列が含まれています。
また、エクスポートされたものと一致するように、一致するインポートされたUTIを追加しようとしましたが、うまくいきませんでした。
私は何を取りこぼしたか?
更新:この質問のOPは、私が望む動作を確認していることに気付きました(彼はそれを望んでいませんが)ので、それは可能であるに違いありません。
ios - iCloud用のUIDocumentの大規模な配列
iCloud同期のプロジェクトがありますが、まったく正しく機能しません。最初に、変更されたオブジェクトの配列を取得し、次にそれらをCSV文字列(クラウドのUIDocumentsのコンテンツになります)に変換してから、iCLoudにアップロードします。オブジェクトが400未満の場合はすべて問題ありませんが、オブジェクトが多い場合はアプリがハングします。
ローカルの自動解放プールを使用しようとしましたが、大きな配列を小さな配列に分割しました。しかし、それは役に立ちませんでした。
たくさんのUIDocumentをiCloudにアップロードするための最良の方法は何ですか?私のアップロード方法:
よろしくお願いします。英語をお詫びします。
iphone - UIDocument、NSFileWrapper、画像
(1)txtファイルと(2)いくつかのjpg画像で構成したいUIDocumentがあります。txt とすべての jpg を NSFileWrapper に入れました。
UIDocument を読み込むと、txt ファイルの情報がすぐに必要になるので、最初に読み込み、実際に必要になるまですべての画像を無視します。
画像を遅延ロードする方法は知っていますが、画像を「遅延」保存する方法がわかりません (特に iCloud を使用している場合、ファイルを不必要にアップロード/ダウンロードしたくありません)。すべての画像を読み込んで、変更していないとしましょう。次に、すべての画像を無視して(変更されていないため)UIDocumentを保存しますが、変更されたテキストを保存します。
どうすればこれを達成できますか?それは可能ですか?それとも自動的に行われますか?それとも、画像を UIDocument に入れずに、各画像を別の UIDocument で処理する必要がありますか? それは私にとって少し混乱しています、私は恐れています。
すべての画像とテキストを保存するこれまでのコードは次のとおりです(変更されたかどうかに関係なく):
UIDocument
UIDocument を保存する場合:
iphone - UIDocument の initWithFileURL のサブクラス化
UIDocument が初期化されたら、いくつかのカスタム メソッドを呼び出す必要があるため、UIDocument の initWithFileURL を上書きしようとしています。
これは良い考えかもしれないと思いました:
これを上書きした場合、他に何かする必要がありますか?NILか何かをチェックする必要があると感じています。メソッドをカスタムで上書きする必要がある場合、通常はどこを見ますか? 私は(UIDocumentを右クリックして定義にジャンプすることによって)これを見ることしかできませんでした:
core-data - アプリケーションのバッキング ストアがファイルとコア データ データベースの両方である場合の UIDocument または UIManagedDocument
どのクラスから継承するかについて少し混乱しています。私のアプリケーションは現在、「Documents」フォルダーにファイルを作成し、Core Data ベースのデータ モデルも持っています。これらのデータ モデルには、ファイルに関する詳細情報が含まれています。
現在、アプリをドキュメント アーキテクチャに移行し、iCloud と統合することを考えています。
UIDocument
ファイルのUIManagedDocument
管理と Core Data の管理の両方を使用する方向で考え始めました。
誰かが私を案内していただければ幸いです。