2016-04-30 11 views
1

名前にスラッシュを含むファイルを読み込んでいます。私はそれが私がそれを探しているパスに存在することを確認することができますが、そこからNSDataを作成すると失敗します。私は/%2Fに置き換えようとしましたが、私はURLを作成するために使用している文字列に差をつけませんでした。名前に「/」を含むファイルを指すファイルNSURLをエンコードする方法

let fileID = "This/That" 
let filename = "\(fileID).json" 

let bundleDirURL = myBundle.URLForResource("dirname", withExtension: nil, subdirectory: "MyFiles") 
let fileURL = bundleDirURL.URLByAppendingPathComponent("Subpath").URLByAppendingPathComponent(filename) 

let data = NSData(contentsOfURL: fileURL) 

リスト行がファイルが正しいパスに存在していても、私にはnullデータを与えている:

これは、URLを構築するコードです。私は/だと分かっています。これをどうすれば解決できますか?私は/をファイル名のままにしておく必要があります。

答えて

3

/は実際にDarwin(OS XまたはiOS)ファイル名では正式な文字ではありません。 UIはちょうどのように見える場合があります。のように見える場合があります。 OS Xはの:を交換します。実際のファイル名はThis:Thatです。使用しているツールによっては、This:ThatまたはThis/Thatのいずれかとなります。これはMac OS 9からの古いホールドオーバーです。Mac OS 9以前では、:は不正ですが、/は合法です。ダーウィン(OS X経由)では、その反対が真です。

あなたは本当に、本当にあなたができる場合は、このような状況を避けたい、とだけ(-_は一般的に安全であり、かつ.はしばしば結構です)、あなたのファイル名に/または:を持っていません。しかし、もしあなたがしなければならないなら、あなたはあなたの文字列の:のためにそれを交換しなければならないでしょう。

関連する問題