我需要从文本文件中读取和写入数据,但我无法弄清楚如何.
我在Swift的iBook中找到了这个示例代码,但我仍然不知道如何编写或读取数据.
import Cocoa
class DataImporter
{
/*
DataImporter is a class to import data from an external file.
The class is assumed to take a non-trivial amount of time to initialize.
*/
var fileName = "data.txt"
// the DataImporter class would provide data importing functionality here
}
class DataManager
{
@lazy var importer = DataImporter()
var data = String[]()
// the DataManager class would provide data management functionality here
}
let manager = DataManager()
manager.data += "Some data"
manager.data …Run Code Online (Sandbox Code Playgroud) 我正在尝试读取一个给定的文件NSURL并将其加载到一个数组中,其中的项目由换行符分隔\n.
这是我到目前为止的方式:
var possList: NSString? = NSString.stringWithContentsOfURL(filePath.URL) as? NSString
if var list = possList {
list = list.componentsSeparatedByString("\n") as NSString[]
return list
}
else {
//return empty list
}
Run Code Online (Sandbox Code Playgroud)
出于几个原因,我对此并不满意.一,我正在处理从几千字节到几百MB的文件.你可以想象,使用这么大的字符串是缓慢而笨拙的.其次,这会在执行时冻结UI - 再次,不好.
我已经考虑在一个单独的线程中运行此代码,但我一直遇到麻烦,此外,它仍然无法解决处理大字符串的问题.
我想做的是下面的伪代码:
var aStreamReader = new StreamReader(from_file_or_url)
while aStreamReader.hasNextLine == true {
currentline = aStreamReader.nextLine()
list.addItem(currentline)
}
Run Code Online (Sandbox Code Playgroud)
我如何在Swift中实现这一目标?
关于我正在阅读的文件的一些注意事项:所有文件都由短或(\n或255个字符)字符串组成,由或者分隔\r\n.文件的长度范围从~100行到超过5000万行.它们可能包含欧洲字符和/或带重音的字符.
我正在尝试学习新的Swift编程语言.它看起来很棒,但我很难做一些像读取本地.txt文件内容这样简单的事情.
我已经尝试了几个我可以通过Google找到的例子,但是它们给出了编译错误,比如这里的答案:从文本文件中读取和写入数据 如果我稍微调整一下代码,它可以工作,但只能从内部的特殊位置读取该项目.
为什么用Swift读取.txt文件就像使用Ruby一样简单?我将如何阅读位于的文件内容~/file.txt?
日Thnx
我有一个texfile如下:
line1
line2
line3
line4
line5
....
Run Code Online (Sandbox Code Playgroud)
我想从文件中读取两个字符串数组,以便line1, line3, line 5,...进入array1并line 2, line 4, line 6,...进入array2.数组的每个元素都存储一行.
我想逐行阅读文本文件,并使用此处显示的示例在iOS屏幕上显示它.
制作textView.text可选项是我能够readDataFromFile运行的唯一方式.当我单击load该函数运行但总是返回nil.我认为这意味着找不到文件.
出于测试目的,我在Xcode中创建了文本文件.我也尝试将它保存在桌面和项目文件夹中.无论哪种方式,它都可以从项目导航器中读取.我还尝试使用TextEdit创建文件,因为应用程序最终需要读取在Xcode外部创建的文本文件.
如果有人可以解释为什么永远不会找到文本文件,我是否感激不已,为了让项目找到它还是需要做些什么,或者nil由于我的方式而导致读取函数由于其他原因而返回实施了它.谢谢.
编辑(2)
感谢您的反馈.作为回应,我做了四个小的代码更改,允许将文本文件内容写入textView.更改包括:从文件名中删除文件扩展名,添加文件名数组,String而不是String?从代码中返回readDataFromFile和重写UITextView.这解决了我所知道的问题.
这是修改后的代码
import UIKit
class ViewController: UIViewController {
var textView = UITextView()
var arrayOfStrings: [String]?
var fileNameWithExtension = "textFile.txt"
let arrayOfFileNames = ["textFile1.txt", "textFile2.txt", "textFile3.txt", "textFile4.txt", "textFile5.txt"]
var fileName = String()
override func viewDidLoad() {
super.viewDidLoad()
// remove comment in the next statement to test files named in ArrayOfFileNames
// fileNameWithExtension = …Run Code Online (Sandbox Code Playgroud)