問題タブ [nsfilepresenter]
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.
objective-c - 外部ファイルのコンテンツの変更を追跡する
インポートされたフォルダー/ファイル ツリーに加えられた外部変更を追跡するためにNSFilePresenter
使用するプロトコルを完全に実装しました。NSFileCoordinator
そして、それは一般的に機能します。
しかし、私はまだ少し混乱しています。
- プロトコルの機能のほぼすべて (すべてではないにしても) を実装しました。
presentedSubitemDidChangeAtURL:
、presentedSubitemAtURL:didMoveToURL:
およびpresentedItemDidChange
呼び出されるのはこれらだけです- 新しいフォルダーの追加やファイルの移動を正常に追跡できます。ただし、ファイルコンテンツの変更を追跡する場合(別のアプリによって編集および保存された場合) は、少し複雑になります。呼び出されるメソッドは次のとおりです
presentedItemDidChange
(明らかに他の場合でも呼び出されます)。
私は何が欠けていますか?
presentedItemDidGainVersion:
どちらかまたはsavePresentedItemChangesWithCompletionHandler:
呼ばれるべきではありませんか?
どんな助けや指針も大歓迎です!:)
objective-c - NSFileCoordinator 座標 WritingItemAtURL での長い遅延
AppleWatch アプリから安全にファイル IO を実行できるように、アプリでセットアップしてNSFileCoordinator
います。NSFilePresenter
私のコードには、ファイルに数回連続して書き込む場所がいくつかあります。これはそれ自体が問題であり、修正に取り組んでいますが、その過程で奇妙な動作に気付いています。
書き込みを次のようにラップします。
最初の書き込みでは、書き込みブロックは 1 ミリ秒以内に発生します。ただし、その後、呼び出しcoordinateWritingItemAtURL
と書き込みブロックの実行の間に約 0.5 秒の遅延があります。
これは予想される動作ですか?
およびのドキュメントの一部は、バッチ操作に使用するNSFileCoordinator
とNSFilePresenter
述べていますprepareForReadingItemsAtURLs:writingItemsAtURLs:options:error:byAccessor:
が、バッチ操作を行わないと、このような長い遅延が発生するのは奇妙に思えます。
更新:これは読書でも起こります。
更新 2: これは、問題を再現するサンプル プロジェクトです。
更新 3:この API をアプリとその拡張機能間の調整に使用することは明らかに悪い 考えです。しかし、疑問はまだ残っています。
icloud - iOS 14: NSFilePresenter がコールバック/通知を受け取らない; iOS13で動作
NSFilePresenter プロトコルを採用する UIViewController があります。iCloud のどこにでもあるコンテナに保存されているファイルの変更を受け取るために、presentedItemDidChange() を実装しました。私の実装は iOS13.7 では問題なく動作していますが、iOS 14 では失敗します。
macOS の「Finder」などの外部プロセスから提示されたファイルを変更すると、presentedItemDidChange() は呼び出されません。
これが iOS 14 の既知のバグである場合、または実装に何か不足していますか?
私の実装はおおよそ次のようになります。
ありがとう