【问题标题】:xcode,ios8, swift, files and arraysxcode、ios8、swift、文件和数组
【发布时间】:2015-02-16 16:04:42
【问题描述】:

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

这是我用来阅读的代码:

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 文件中的数据,为什么?如果我删除该文件,应用程序不会t 显示错误并继续工作,即使我移动到 thrash 文件。这怎么可能?如何在应用程序中加载此文件之前编辑或删除它?

我遇到的另一个问题是我想使用数组而不是大字符串,数组应该是这样的

var array = [(number:Int(),name:String(),date:String())]

txt文件的结构如下 number\tname\tdate\nnumber\tname\tdate 等等

我不知道如何将文件的不同行拆分为一个数组,并将行的 3 个元素拆分为数组的一个元素,使用“\n”作为元素的分隔符,使用 \t 分隔 Int和两个字符串

而且我不知道如何将数组保存在 txt 文件中并重新加载它,我是否必须使用一些循环或一段时间,或者有一些特定于我的情况的功能?

谢谢

【问题讨论】:

    标签: arrays xcode file swift


    【解决方案1】:

    您将无法使用 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")
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-11-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多