問題タブ [nsfilewrapper]
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.
appkit - ファイルを NSDocument に保存すると、名前に奇妙な文字が含まれる同じファイルのバージョンが作成されるのはなぜですか?
ドキュメント タイプが多数のファイルを含むパッケージ バンドルである NSDocument ベースのアプリケーションに取り組んでいます。私はそれを次のように保存しています:
つまり、バンドルに「default」フォルダを作成し、その中に「someFile.ext」をいくつかのコンテンツとともに保存します。
さて、問題です。実際にディスクに保存されているものを見ると、次のように表示されます。
ファイルを保存するたびに、NSDocument ラッパーがリソースのバージョン管理されたコピーを作成するようです。バージョン管理されたクローンは必要ありません。最新のコンテンツを含むバニラ ファイルのみが必要です。
バージョン管理されたリソースはどこから来るのですか? 何が起きてる?読むべきドキュメントはありますか?
objective-c - NSFileWrapper を更新するには?
私はNSFileWrapper
いくつかのコンテンツを持っています。保存して ( writeToURL...:
)、新しいコンテンツを追加して、もう一度保存したい.
同じファイルを何度も書き込むことは避けたいと思います。したがって、私が明確に理解した場合、それはそのオプションNSFileWrapperWritingAtomic
が私には向いていないことを意味します. 特に、ファイルラッパーをメソッドに保存すると
(のOSX
アナログのUIManagedDocument
)
Appleが言うように、「このオプションをオーバーライドで使用しないでください-[NSDocument writeToURL:ofType:error:]
」。
したがって、私はこのオプションを使用しませんが、ファイル ラッパーからのファイルの更新 (つまり、再保存) は失敗します (以下を参照)。アイデア/手がかりはありますか?
これが私がすることです:
1
で初めて保存します
それはうまくいきます。
私のファイルラッパーは
2
同じコマンドでもう一度保存します。エラーが発生します
与えられた名前は実際には「attached_files」です。
3
オプションを使用してNSFileWrapperWritingWithNameUpdating
も、同じエラーが発生します。
4
オプションを使用すると、NSFileWrapperWritingAtomic
エラーは発生しません。
macos - ファイル パッケージのコンテンツが更新されない: なぜですか?
誰もこの問題を知っていますか?
私はファイルパッケージに(のメソッドでNSDocument
)書いています。
ファイル パッケージの内容を見ると、更新されていません。新しいファイルは表示されず、古いファイルはそのままです。古いファイル (もう存在しないはずのファイル) を開こうとすると、エラー メッセージ ( 内Finder
) が表示されました:「見つかりません...」
何が問題ですか:
私は間違った方法で遊んでい
NSFileWrapper
ますか?パッケージに「隠されている」ファイルの情報の更新に問題はありますか?
編集
error
書いているときはありません。NSDocument
Core Data のサポートが必要なため、メソッドは使用していません。BSManagedDocument
サブクラスと呼ばれるクラスを使用しNSDocument
ます。おそらく関連する問題は、
NSFileWrapperWritingAtomic
オプションを使用しないと、「... という名前のファイル (私のディレクトリ!!!) が既に存在するため、書き込みできません」というエラーが表示されることです。
ios - メモリ不足が原因で、小さなファイルが多数ある UIDocument と NSFileWrapper がクラッシュする
UIDocument
多くの小さなファイル (約 3200 のテキスト ファイル) を含むファイル パッケージで構成されるカスタムがあります。ドキュメント全体のサイズはわずか 600 KB ですが、ドキュメントを開こうとするたびに、メモリ不足のためにアプリがクラッシュします。
UIDocument がフォルダーを にマップしようとする場所まで追跡しましたNSFileWrapper
。
ドキュメントは表形式で表示されるので、ファイル パッケージから一度に読み込む必要があるのは最大 20 個のファイルだけです。
「部分的に」NSFileWrapper
または他の形式の遅延読み込みのみを読み込む方法はありますか (問題は多くの小さなファイルに関するものであるため、メモリ マッピングについては話していません)。
cocoa - NSFileWrapper と単純な古いファイル ハンドル
クロスプラットフォーム コードを大量に含むアプリを Cocoa に移植しています。ロード/保存のためにディスク上のファイルを直接操作する低レベルのファイル処理ルーチンを使用することは必須です。
はNSFileWrapper
メモリ内のファイルの内容を表示するように設計されており、NSData
ディスク上の実際のファイルの詳細を抽象化するため、それを直接使用することはできませんよね?
したがって、以下を使用して低レベルのファイル処理コードを使用できるようにするには
fopen()
fread()
私たちが考えている同様のANSI-Cのもの
NSFileWrapper
のAPI を使用してNSDocument
、NSData
ファイルラッパーから一時に書き戻します。フォルダー
(例: ~/Library/Caches/ )- その温度を引き渡します。ファイル(〜100k .. 1MB)を下位レベルに。
ファイルの書き込みも同様に機能しますが、その逆です。
さて、このアプローチは、 が表すファイルに直接アクセスする最も簡単な方法ですか? NSFileWrapper
ファイル ラッパーの一部の API を見落としていませんか?
特にサンドボックスとiCloudについて考えてみると、何か問題が発生する可能性はありますか?
複数のファイルを含むファイル バンドルをサポートしたいので、ファイル ラッパー ベースの API を使用し、ベース メソッドをNSDocument
使用しないようにしたいと考えています。NSURL
フィードバックや批評家は大歓迎です!
cocoa-touch - NSFileWrapper による書き込みと NSFileManager によるコピー
違いはありますか
と
(特に、オプションの値に応じて、ここでのオプションの最良の選択は何でしょうか?)?
NSFileWrapper をよりよく理解するために、この質問をします。私のコードでは、どちらかを使用する選択肢があることがわかりました。答えには、「ハードリンク」に関する考慮事項が含まれる可能性があると思います。
PS: これらのメソッドのいずれかをバックグラウンドで使用したいと思います。
ios - UIDocument は、メタデータを含む大きなドキュメントに適した戦略ですか?
UIDocument
enを使用しNSFileWrapper
て、かなりの数の大きなビデオ ファイルといくつかの小さなテキスト ファイルを含む「プロジェクト」を保存することを検討しています。私が遭遇したいくつかの問題があり、UIDocument がまだ正しい戦略であるかどうか疑問に思い始めています。
パフォーマンス
私が知る限り、NSFileWrapper はすべてをメモリにロードします。これは、大きなビデオ ファイルを扱う場合に問題になることがあります。標準を無視したカスタムの save メソッドと load メソッドを使用することで、これを回避できると思いますNSFileWrapper
。
メタデータ
いくつかのメタデータとともにすべてのドキュメントのリストを表示したいと考えています。これには、たとえば、プレビュー画像、記録されたシーンの数、ビデオの長さなどを含めることができます。このデータを取得する唯一の方法は、各ドキュメントを開いて取得することです。特に大きなドキュメントでは、おそらくかなり遅いでしょう。
ソリューション?
現在、2 つの解決策があります。UIDocument を完全に捨てて、カスタム アーキテクチャを使用するか、何らかの集中化されたメタデータ ファイルを使用します。後者の欠点は、2 つの別々の場所でメタデータを管理する必要があり、それらを手動で同期する必要があることです。
UIDocument はまだここに行く方法ですか? もしそうなら: これらの問題を解決する方法は何ですか?
cocoa - Swift で NSFileWrapper のサブクラス化中にエラーが発生しました
NSFileWrapper
提供されるファイル処理機能を保持しながら、独自のファイル ラッパー用に特化するためにサブクラス化しましNSFileWrapper
た。
私は何もオーバーライドしておらずNSFileWrapper
、サブクラスに の初期化子を実装していません。代わりに、ファイル ラッパーに適した独自の初期化子を提供しました。
イニシャライザ内で、使用しました
私のサブクラスのプロパティはdocumentation = self.fileWrappers["Documentation"] as NSFileWrapper
どこですか。しかし、実行はこのステップで停止します documentation
NSFileWrapper
私が間違っていることを理解していません。NSFileWrapper はサブクラス化することを意図していませんか? そもそもサブクラスでイニシャライザを探しているのはなぜですか?
編集:私の初期化子は
そして、私はそれを呼び出しながら渡していますnil
。options
outError
bash - NSFileWrapper がサンドボックスで検疫ビットを設定するのはなぜですか
サンドボックスのみの場合に、へNSFileWrapper
の呼び出しがaddRegularFileWithContents:preferredFileName:
(ファイルで使用したときに見られるように) ファイル検疫ビットを設定する理由がわかりません。xattr -l
私のアプリはファイルをドキュメント バンドルに保存するので、これは私が使用する必要がある方法だと思いますが、検疫ビットが私を夢中にさせています。
多分これはある種の機能ですが、私のアプリもchmod
これらのファイルを実行可能ファイルとして保存し、.xml を使用してシェル スクリプトとして実行しますNSTask
。ただし、検疫ビットをオンにすると、bash シェルからエラーが発生します (これは、スタック オーバーフローで十分に文書化されています)。
他の誰かがこれを経験しましたか?これらがバグなのか機能なのか知っていますか? 今のところ、これを回避する唯一の方法は、ファイルのシェルを事前に知っており、ファイルの先頭にあるインタープリター (つまり#!/usr/bin/php
) に依存しないことですが、これは、すべきではない問題を回避するための厄介なハックです。
macos - NSFileWrapper のコンテンツへの変更は端末からは見えるが、Finder には表示されない
最近、OS X アプリを、単一ファイル形式ではなくパッケージベースのファイル形式を使用するように変換しました。私の文書クラスは NSDocument のサブクラスであり、 -fileWrapperOfType: を使用して書き込み用のファイル ラッパーを生成し、フレームワークにディスクへの書き込みを実行させています。(つまり、NSFileWrapper 自体の書き込みメソッドは使用していません。)
10.9.4、Xcode 5.1.1、10.9 SDK を実行しています。
ファイルの読み取りと書き込みは問題なく実行できます。ドキュメントに変更を加えると、ファイル パッケージに適切に書き出されます。端末からファイル パッケージの内容を調べると変更が表示され、ファイルを再度読み込むと変更が期待どおりに表示されます。
しかし、「パッケージの内容を表示」コマンドを使用してパッケージの内容を調べたときに、変更が Finder に表示されません。
パッケージの内容の変更を Finder に認識させるために何かする必要がありますか?
これに関するアドバイスやアイデアをありがとう!