web-dev-qa-db-ja.com

.txtファイルを配置し、IOSプロジェクトでそれから読み取る場所

xcode Swift Iphoneプロジェクトに.txtファイルを配置します。最初に、デスクトップからプロジェクトからSupporting Filesフォルダーにドラッグアンドドロップします。 Android "assets"なので、ファイルを好きな場所に配置できますか?

この例のファイルはREADME.txtという名前で、たくさんの行と段落があります。

とても簡単なので、README.txtファイルの内容をビューに印刷したいと思います。

ファイルがプロジェクト/SupportFiles/README.txtにある場合、どのように読み取り機能を実行し、どのパスを挿入する必要がありますか?

どうもありがとう!

30
Felix Me
let path = NSBundle.mainBundle().pathForResource("README", ofType: "txt")
textView.text = String(contentsOfFile: path, 
                             encoding: NSUTF8StringEncoding, 
                                error: nil)

ファイルをプロジェクトブラウザの任意の場所にドロップし、正しいターゲットに追加されていることを確認してください。

答えを拡張するために、フォルダーに配置して、 + pathForResource:ofType:inDirectory: を使用することもできます。

34
Mundi

NSFileManagerを使用して、プロジェクトのどこかにファイルをドロップすることをお勧めします。

if let path = NSBundle.mainBundle().pathForResource(name, ofType: "txt"){
    let fm = NSFileManager()
    let exists = fm.fileExistsAtPath(path)
    if(exists){
        let c = fm.contentsAtPath(path)
        let cString = NSString(data: c!, encoding: NSUTF8StringEncoding)
        ret = cString as! String
    }
}

Swift 4(オリジナルの@ Pierre-Yves Guillemetに感謝)

ファイルがプロジェクト内にある(および.txtがある)限り、これは機能します(この例では、「MyFile.txt」はプロジェクト内にあるファイルであると想定しています)。

static func LoadFileAsString() -> ()
{        
    if let path = Bundle.main.path(forResource: "MyFile", ofType: "txt")
    {
        let fm = FileManager()
        let exists = fm.fileExists(atPath: path)
        if(exists){
            let content = fm.contents(atPath: path)
            let contentAsString = String(data: content!, encoding: String.Encoding.utf8)
        }
    }
}
4
Aggressor

In Swift 3

guard let path = Bundle.main.path(forResource: "README", ofType: "txt") else {
  return
}

textView.text = try? String(contentsOfFile: path, encoding: String.Encoding.utf8)
4
mokagio

path'sタイプを定義し、!行の最後に配置すると、警告は表示されません。

 let path:String = NSBundle.mainBundle().pathForResource("README", ofType: "txt")!
 textView.text = String(contentsOfFile: path,
                 encoding: NSUTF8StringEncoding,
                 error: nil)
1
fatihyildizhan

あります Assets.xcassets画像およびファイル用。そして、資産からそれを読み取る方法は次のとおりです。

if let data = NSDataAsset(name: "AssetName")?.data {
    textView.text = String(data: data, encoding: .utf8)
}
0
Kimi Chiu