在Swift中逐行读取文本文件?
刚开始学习Swift,我已经从我的代码中读取文本文件,App显示整个文本文件的内容。 我怎样才能一行一行地显示和多次调用该行?
TextFile.txt包含以下内容。
- 香蕉
- 苹果
- 梨
- 草莓
- 蓝莓
- 黑茶
以下是目前有什么..
if let path = NSBundle.mainBundle().pathForResource("TextFile", ofType: "txt"){ var data = String(contentsOfFile:path, encoding: NSUTF8StringEncoding, error: nil) if let content = (data){ TextView.text = content }
如果还有其他方法,请告诉我。 非常感激
Swift 3.0
if let path = Bundle.main.path(forResource: "TextFile", ofType: "txt") { do { let data = try String(contentsOfFile: path, encoding: .utf8) let myStrings = data.components(separatedBy: .newlines) TextView.text = myStrings.joined(separator: ", ") } catch { print(error) } }
variablesmyStrings
应该是数据的每一行。
使用的代码是: 在用Obj-C编写的iOS SDK中逐行读取文件,并使用NSString
检查以前版本的Swift的编辑历史logging。
更新Swift 2.0 / Xcode 7.2
do { if let path = NSBundle.mainBundle().pathForResource("TextFile", ofType: "txt"){ let data = try String(contentsOfFile:path, encoding: NSUTF8StringEncoding) let myStrings = data.componentsSeparatedByCharactersInSet(NSCharacterSet.newlineCharacterSet()) print(myStrings) } } catch let err as NSError { //do sth with Error print(err) }
另外值得一提的是,这段代码读取了项目文件夹中的一个文件(因为使用了pathForResource),而不是在例如设备的文档文件夹中
您可能确实想要一次读取整个文件。 我敢打赌,这是非常小的。
但是接下来你想把结果string拆分成一个数组,然后把数组的内容分布到不同的UI元素,比如表格单元格。
一个简单的例子:
var x: String = "abc\ndef" var y = x.componentsSeparatedByString("\n") // y is now a [String]: ["abc", "def"]