Подтвердить что ты не робот

Где разместить .txt файл и прочитать его в проекте IOS

Я хочу поместить файл .txt в свой проект Xcode Swift Iphone. Во-первых, я просто перетащил его с рабочего стола на папку поддерживающих файлов из проекта. Разве нет папки, например, в Android-активах, поэтому я могу разместить файлы в любом месте?

Файл в моем примере называется README.txt, который содержит кучу строк и абзацев.

Достаточно просто, теперь я хочу распечатать содержимое файла README.txt для представления.

Как мне выполнить функцию чтения и какой путь я должен вставить, если мой файл находится в проекте /SupportFiles/README.txt?

Спасибо, много!

4b9b3361

Ответ 1

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

Просто отпустите файл в любом браузере проекта и убедитесь, что он добавлен в нужную цель.

Чтобы развернуть ответ, вы также можете поместить их в папку и использовать:  + pathForResource: ofType: inDirectory:.

Ответ 2

Я бы рекомендовал использовать 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
    }
}

Ответ 3

В 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

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)
        }
    }
}

Ответ 5

Если вы определяете тип path's и ставьте ! конец строки, вы не получите предупреждения.

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

Ответ 6

Там есть Assets.xcassets для изображений и файлов. А вот как это прочитать из активов.

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