2016-04-12 4 views
1

私はアプリケーションのバンドルから次のコードを使ってテキストファイルを読むのに使いました。しかし、私のアプリケーションがもうそれらを見つけることができなくても。私はすべてのファイルがAssets.xcassetsにあることを100%確信しています。私はそれらを見たり、編集したり、ディレクトリから別のファイルに変換したりできます。しかし、私のアプリケーションはそれらを読んでいない、私が逃したものを教えてください!私のアプリケーションのバンドルから私のテキストファイルを読むことができません

これは私が使用している手順である...

func readBundle(file:String) -> String 
{ 
    var res: String = "" 
    if let path = NSBundle.mainBundle().pathForResource(file, ofType: "txt") 
    { 
     let fm = NSFileManager() 
     let exists = fm.fileExistsAtPath(path) 
     if(exists) 
     { 
      let c = fm.contentsAtPath(path) 
      res = NSString(data: c!, encoding: NSUTF8StringEncoding) as! String 
     } 
    } 
    return res 
} 

私はこのようにそれを使用しています:

let res = readBundle("test") 
print(res) 
+0

これらのテキストファイルをアセットとして保存するのは確実ではありません。私はアートワークではないバンドルリソースのすべての種類について、@ Pyroの答えに固執します。 – Lasse

+0

http://stackoverflow.com/a/30808846/2303865 –

+0

http://stackoverflow.com/questions/34548771/swift-how-do-i-get-the-file-path-inside-a-folder/34548888 ?s = 2 | 1.1752#34548888 –

答えて

2

XCAssetsにおける非画像ファイルを保存するとき、あなたはそれらをacccessするNSDataAssetを使用する必要がありますコンテンツ

https://developer.apple.com/library/ios/documentation/UIKit/Reference/NSDataAsset_Class/

func readBundle(file:String) -> String 
{ 
    var res = "" 
    if let asset = NSDataAsset(name: file) , 
     string = String(data:asset.data, encoding: NSUTF8StringEncoding){ 
     res = string 
    } 
    return res 
} 
別のオプションで
2

し、「XCAssets」あなたは彼らがあなたのプロジェクトのメインターゲットのビルドフェーズセクション

Copy Bundle Resourceに存在するかどうかを確認、プロジェクト構造の画像以外のあなたのリソースの別のフォルダ/グループを作成することができます

このようなリソースを追加した場合、現在のコードはそのまま動作するはずです

func readBundle(file:String) -> String 
{ 
    var res: String = "" 
    if let path = NSBundle.mainBundle().pathForResource(file, ofType: "txt") 
    { 
     //you should be able to get the path 
     //other code as you has written in the question 
    } 
    return res 
} 
+0

ありがとうパイロ、あなたは私の命を救った。それはよくうまくいった! –

+0

私は欲しかったが、stackoverflow.comは私が新しい –

関連する問題