問題タブ [nsfilecoordinator]

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.

0 投票する
1 に答える
656 参照

iphone - NSFileCoordinator リーク

これは、ブロックに関連するメモリ管理に関する些細な質問の 1 つであり、いつどこfcで解放する必要があるのか​​ わかりません

(1)でリリースすればOK(リークなし)だと思いますが、これは本当に標準的なやり方なのでしょうか? (同じオブジェクトが呼び出すブロック内のオブジェクトを解放する??)。ここに何か違和感を感じます。

(2)でもOKですが、アクセサーブロックが同期的に呼び出されるためです。

学習目的で...アクセサーブロックが非同期で呼び出されるとどうなりますか? (NSFileCoordinatorの必要のない架空のケース)そのような場合、ivarを作成fcする必要がありますか、それとも最初のアプローチとしてそれを実行しても問題ありませんか?

どんな助けでも大歓迎です

:)

0 投票する
5 に答える
1584 参照

ios - iOS 5.0 シミュレーターで UIManagedDocument を使用すると NSFileCoordinator エラーが発生する

OSX 10.6でXCode 4.2を使用して、iOS 5.0でUIManagedDocumentを使用し、シミュレーターでアプリを実行しています。問題のコードは次のようになります。

マークされた行を実行すると、ログに次のメッセージが作成されます。

メッセージが送信された後、UIManagedDocument が機能する場合と機能しない場合があります。これを決定する状況はまだわかりません。

実際にはスタンフォード大学の CS193p コースのコード例の 1 つであるため、このコードが正しいと確信しています。サンプル全体は、 http: //www.stanford.edu/class/cs193p/cgi-bin/drupal/ の下の Web サイトでダウンロードできます 。 コードへの直接リンク: http://www.stanford.edu/class/cs193p/ cgi-bin/drupal/system/files/sample_code/Photomania_0.zip

さらに、コードは「驚くべき」メッセージを生成せずにデバイス自体で正常に実行され、その後のすべてのコードが正常に実行されます。

Google でも Apple Developer ページでも何も見つかりませんでした。シミュレータまたは XCode を再起動するか、両方を再インストールしても、動作は変わりません。

何か案は?

0 投票する
1 に答える
415 参照

objective-c - iCloudNSFileManagerAPI-ゲームスコアストレージ

私は現在、ユーザーがゲームの進行状況をデバイス間で同期できるように、iCloudスコアストレージを有効にしたいiOSアプリケーションを持っています。ユーザーの進行状況は、サンドボックスドキュメントフォルダーの複数のplistファイルに保存されます。私はiCloudとさまざまな「ヘルパークラス」(NSFileManager、UIDocument、NSFileCoordinatorなど)に関するいくつかの記事をオンラインで読みましたが、どれが私にとって正しいものか(NSFileManagerは仕事をしますか、それともUIDocumentをサブクラス化する必要がありますか)少し混乱しています)。

APIはすべて私には少し混乱しています。

0 投票する
1 に答える
967 参照

ios - iCloud コンテナ上のドキュメントの存在を確認する

ファイルがローカルにダウンロードされていない場合でも、アプリケーションの iCloud コンテナーにドキュメントが存在するかどうかを検出するために NSMetadataQuery を使用しています。

NSFilePresenter を持つ NSFileCoordinator は同じことを行うことができますか? ファイルがまだローカルで利用できない場合でも、ファイルが存在することを確認しますか?

更新: ユビキタス コンテナーにファイルが存在するかどうかを検出するために、しばらくの間 NSMetadataQuery を使用してきました。しかし、少なくとも 10.8.2 でテストすると、常に機能するとは限りません。ファイルの存在について多くの偽陰性を取得しています。

他の人が I Belive ファイル コーディネーターを使用していることは知っています。誰かがこれについて意見を持っていますか、またはそれらの使用方法の例を教えてください。

0 投票する
1 に答える
3051 参照

cocoa - NSFileCoordinator の正しい使い方

NSFileCoordinator を使用してファイルを書き込む場合、正しい NSFileCoordinatorWritingOptions を指定する必要があります。詳細に説明されていますが、いつどれを使用すればよいかわかりません。利用可能なオプションは次のとおりです。

  • NSFileCoordinatorWritingForDeleting
  • NSFileCoordinatorWritingForReplaceing
  • NSFileCoordinatorWritingForMoving
  • NSFileCoordinatorWritingForMerging

たとえば、ファイル (plist など) を作成する場合、どのオプションが適切ですか? ファイルを変更するときはどれですか?

理解を深めるために、誰かが NSFileCoordinatorWritingOptions を説明できますか?

0 投票する
2 に答える
1750 参照

objective-c - NSFilePresenter -presentedSubitemDidAppearAtURL:メソッドが呼び出されることはありません

ドキュメントベースのアプリケーションドキュメントパッケージを表すNSFilePresenterプロトコルに準拠するオブジェクトがあります。パッケージ内に新しいファイルが作成されると、プログラムで適切なNSFileCoordinationメソッドを使用してNSFileManagerを使用するか、Finderを介して-presentedSubitemDidChangeAtURL:、イベントのみを取得しましたが、この場合はそれほど明白ではありません-presentedSubitemDidAppearAtURL:

これは予期された動作ですか、それとも私は何か間違ったことをしていますか?

-presentedSubitemDidAppearAtURL:NSFilePresenterのコメントは、それを明確に述べています。

ディレクトリに含まれるファイルまたはディレクトリが追加されたことを通知します。このメソッドが実装されていないが実装されて-presentedItemDidChangeおり、ディレクトリが実際にファイルパッケージである場合、-presentedItemDidChange代わりにファイル調整機構が呼び出されます。

0 投票する
2 に答える
1891 参照

ios - iCloudドキュメントの名前を変更する

問題

私がこれまでに持っているのは、新しいローカルファイルを作成してiCloudファイルを削除するコードです。

iCloudに残るようにiCloudドキュメントの名前を変更することは可能ですか?

GarageBandはそれを行うことができます。iCloudの曲の名前を変更することができます。名前の変更が行われた後も、曲はまだiCloudにあります。ただし、GarageBandはAppleアプリであるため、プライベートAPIを使用する場合があります。

私の現在のコード:

更新:まだ運がない

-setUbiquitous:itemAtURL:destinationURL:error:ドキュメントの名前変更には使用できないことがわかりました。

すでにローカルファイルで[setUbiquitous:NO itemAtURL:oldLocalURL destinationURL:newLocalURL error:&error]を呼び出すと、次のようになります。

Error Domain = NSCocoaErrorDomain Code = 512 "操作を完了できませんでした。(Cocoaエラー512)" UserInfo = 0x1fdf6730 {NSURL = file:// localhost / var / mobile / Applications / 4BABA000-B100-49FC-B928-B0F403FC75FF /Documents/LocalDrawing.td2/、NSUnderlyingError = 0x20940e80 "操作を完了できませんでした。(LibrarianErrorDomainエラー2-同期されていないアイテムの同期を無効にできません。)"}

すでにクラウドファイルで[setUbiquitous:YES itemAtURL:oldCloudURL destinationURL:newCloudURL error:&error]を呼び出すと、次のようになります。

Error Domain = NSCocoaErrorDomain Code = 512 "操作を完了できませんでした。(Cocoaエラー512)" UserInfo = 0x208e9820 {NSURL = file:// localhost / var / mobile / Library / Mobile%20Documents / 22DR89XVRF〜com〜opcoders 〜triangle-draw / Documents / CloudDrawing.td2 /、NSUnderlyingError = 0x208d45b0 "操作を完了できませんでした。(LibrarianErrorDomainエラー2-同期されたアイテムの同期を有​​効にできません。)"}

したがって-setUbiquitous:itemAtURL:destinationURL:error:、ドキュメントの名前変更には使用できません。

0 投票する
0 に答える
1456 参照

ios - サンドボックス Mac App Store アプリでの sqlite ジャーナル ファイルの NSFileCoordinator の正しい使用法

sqlite が (wal またはジャーナル ファイルを使用して) トランザクションを実行する方法が原因で、sqlite コードを App Store に移植する際に多くの問題があります。Apple ドキュメントの関連部分は次のとおりです。

アプリは、同じ名前で拡張子が異なる複数の関連ファイルを開いたり保存したりできる必要があります (たとえば、映画ファイルと同じ名前の字幕ファイルを自動的に開いたり、SQLite ジャーナル ファイルを許可したりします)。そのセカンダリ ファイルにアクセスするには、NSFilePresenter プロトコルに準拠するクラスを作成します。このオブジェクトは、メイン ファイルの URL をその primaryPresentedItemURL プロパティとして提供し、セカンダリ ファイルの URL をそのpresentedItemURL プロパティとして提供する必要があります。ユーザーがメイン ファイルを開いた後、ファイル プレゼンター オブジェクトは NSFileCoordinator クラスの addFilePresenter: クラス メソッドを呼び出して自身を登録する必要があります。

Apple DTS から次のコードが提供されます。

ここで、SQLiteRelatedItemPresenter は次のとおりです。

この特定の例は、すべて openSQLiteFileAtURL メソッド内で実行される sqlite 操作に対して正常に機能します。ロジックをサブメソッドに分割しようとすると、多くの問題が発生します。たとえば、次のようになります。

addPresentersForURL は (openSQLiteFileAtURL で) 1 回だけ呼び出す必要があるようですが、サンドボックスの特権エラーが原因でアプリを動作させることができませんでした...助けはありますか?

0 投票する
2 に答える
2449 参照

objective-c - NSFilePresenter メソッドが呼び出されない

NSFilePresenter メソッドと NSFileCoordinator メソッドを使用してファイルの変更を監視する単純な (おもちゃの) プログラムを作成しようとしています。

このプログラムは、(ハードコードされた) テキスト ファイルをロードするテキスト ビューと、ファイルに変更を加えて保存するボタンで構成されます。アイデアは、2 つのインスタンスを実行していて、1 つのインスタンスに保存すると、他のインスタンスが変更されたファイルをリロードするというものです。

ファイルの読み込みと保存は正常に機能しますが、NSFilePresenter メソッドは呼び出されません。これはすべて、NSFilePresenter プロトコルを実装する FileManager というクラスに基づいています。コードは次のとおりです。

インターフェース:

実装:

reloadFile が呼び出されapplicationDidFinishLaunching、保存ボタンがクリックされるたびに saveFile が呼び出されることに注意してください (アプリ デリゲートを介して)。

これまでに呼び出される唯一の NSFilePresenter メソッド (ログによる) はpresentedItemURL です (プログラムが起動してファイルをロードするときに 4 回呼び出され、保存がクリックされるたびに 3 回呼び出されます。2 番目のインスタンスで [保存] をクリックしても、最初のインスタンス。

ここで私が間違っていることを誰かに教えてもらえますか?

0 投票する
2 に答える
966 参照

objective-c - OSX関連ファイル作成

あるファイル形式から別のファイル形式に簡単に変換できるアプリケーションを構築しようとしています。ソース ファイルをドック タイルにドラッグすると、出力ファイルがソース ファイルと一緒に (同じディレクトリに) 作成されます。

ドキュメントを読んだ後、すべてが正しくセットアップされました。

私の Info.plist には次のものが含まれています。

ドキュメントを正しく読んでいる場合、これにより、アプリはmy_src_typeドラッグアンドドロップを介してファイルを受け入れmy_dest_type、入力ファイルと同じディレクトリにファイルを出力できるようになります。もちろん、サンドボックスにそれを知らせた場合に限ります。

そのために、SimpleFilePresenter次のような があります。

出力ファイルを作成する許可を要求するとすぐaddFilePresenter:に、コンソールに次のエラーが表示されます。