2017-10-30 3 views
1
guard let tempDirURL = NSURL(fileURLWithPath: NSTemporaryDirectory()).appendingPathComponent("MyAppStuff.xxx") else { 
     return nil 
    } 

私の質問は次のとおりです:tempDirURL.pathは常に空白を空白にしませんか?ドキュメントから空白なしのNSTemporaryDirectory()空白なしのNSTemporaryDirectory()

EDIT:enter image description here

+2

パスに空白を持つことに弾力性のあるコードを書かないのはなぜですか?一時ディレクトリのパスについては、特に保証されていません。それによると、現在空白がない場合、このような問題が発生する可能性は低く、従来のアプリケーションでは正しく処理できない可能性があります。だから誰もが好きで、正しくスペースを処理しようとする。 –

+0

申し訳ありませんが、私ができる最善の賛成は私の質問への答えを受け入れることです、嘆願はあなたが分からなければコメントを投稿しません。私はポリシーのためにいくつかのバイナリをダンプする必要があるアプリケーションに取り組んでいます。バイナリの場所をパッチした後、コンパイルされたフレームワークからデバイスにフラッシュされます。それは顧客の契約です。私が問題なく処理できるようにするには、NSAppleScriptを使用しないでください。他の方法は、この場合不要なヘルパーツールを作成して昇格された特権を持つようなものです。また、彼らはそれを支払っていませんでした。 – Mike97

+0

私はそれがなぜ必要なのかに関する最初の記事を編集しました。問題はシンプルですが、Appleのソースを調べることはできません。そのドキュメントに関するドキュメントはありません。 – Mike97

答えて

1

API契約はNSTemporaryDirectory()によって返されたパスにスペースが含まれないことを保証するものではありません。したがって、あなたはそれができないと想定することはできません。パスにファイルシステムで許可されているすべての文字が含まれる可能性があるかどうかを考慮する必要があります。

+0

GNUStep-NSTemporaryDirectory()がそのパスにユーザー名を追加していたため(明らかに起こりうることですが)、Cocoaの魔法では起こりません(https://lists.gnu.org/archive/htmlを参照)。 /discuss-gnustep/2001-04/msg00032.html)。また、ココアのものは異なっており、その例(私の新しい編集の質問を参照)はちょうど "予期しない"ものであることは明らかです。 – Mike97

+1

@ Mike97今はココア*では起こりません。しかし、約束されていないものは、いつでも自由に変更することができます。実際、NSTemporaryDirectory()の場所は過去に変更されています。以前は '/ var/folders'にあったのに対し、'/tmp'の中にいました。それは将来変更される可能性があります。そのようなことが起きた場合には壊れないような方法でコードを書くべきです。 –

+0

厳密には良いコードの問題ではない、ちょうど私は言語ではないAppleScriptが嫌いです(または?)。私はヘルパーを書いている方法を見つけました(私は再利用するために持っていますが、彼らにとっては良いことではありません..)。これは、WindowsツールのMac版であり、ユーザーがデバイスをプログラムする必要がありますが、価格設定ではAppleScriptで時間を失うことはできません。そのため、バグの可能性があることを知らせるか、/ private /とにかくNSTemporaryDirectory()も秘密ではないし、さらに3日間永続的に見えるので、誰も貴重な一時ファイル(彼らの恐れ)を盗むことはありません。 – Mike97