Skip to main content
 首页 » 操作系统

arrays之xcode、ios8、swift、文件和数组

2024年01月01日48lhb25

我正在尝试为我的应用程序添加持久性,所以我必须读取和写入文件

这是我用来阅读的代码:

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