我正在尝试为我的应用程序添加持久性,所以我必须读取和写入文件
这是我用来阅读的代码:
let path = NSBundle.mainBundle().pathForResource("Data", ofType: "txt")
var text = String(contentsOfFile: path!, encoding: NSUTF8StringEncoding, error: nil)!
这是我用来写的行
text.writeToFile(path!, atomically: false, encoding: NSUTF8StringEncoding, error: nil)
这里发生了一些奇怪的事情,我的项目文件夹中没有 Data.txt 文件但它有效。为什么?
为了解决这个问题,我删除了一些文件夹,在项目文件夹中创建了一个 Data.txt 文件,应用程序工作正常,但我看不到存储在 txt 文件中的数据,为什么?如果我删除该文件,应用程序不会即使我移动到 thrash 文件,它也不会显示错误并继续工作。这怎么可能?如何在应用程序加载该文件之前编辑或删除它?
我遇到的另一个问题是我想使用数组而不是大字符串,数组应该是这样的
var array = [(number:Int(),name:String(),date:String())]
txt文件结构如下 number\tname\tdate\nnumber\tname\tdate 等等
我不知道如何将文件的不同行拆分为一个数组,并将行的 3 个元素拆分为数组的一个元素,使用“\n”作为元素的分隔符并使用\t 分隔 Int和两个字符串
而且我不知道如何将数组保存在 txt 文件中并重新加载它,我是否必须使用一些 for cycle 或 some while 还是有一些特定于我的情况的函数?
谢谢
请您参考如下方法:
您将无法使用 NSUserDefaults 保存元组,因此我认为您应该在存储数据之前使用子数组对数据进行分组:
class Load {
class func array(key:String) -> [AnyObject]! {
return NSUserDefaults.standardUserDefaults().arrayForKey(key)
}
}
class Save {
class func array(key:String, _ value:[AnyObject]){
NSUserDefaults.standardUserDefaults().setObject(value, forKey: key)
}
}
var number = 15
var name = "John"
var date = NSDate()
var myArray:[[AnyObject]] = []
myArray.append([number,name,date])
Save.array("myArray", myArray)
number = 16
name = "Jane"
date = NSDate().dateByAddingTimeInterval(60*60*24)
myArray.append([number,name,date])
Save.array("myArray", myArray)
let loadedArray = Load.array("myArray")
