在Swift中将数组保存到plist文件中苦苦挣扎

时间:2014-08-27 15:24:59

标签: swift nsmutablearray plist

我目前正在实施我的第一个应用程序的最后一个阶段,但有很多问题。我正在尝试保存用户输入的数据,但我发现它非常令人困惑。

我最初使用的NSUserDefaults非常容易理解,但我很快发现NSMutableArrays无法存储,所以我不得不寻找替代方案。我可以看到将我的五个数组存储在一个plist文件中是最好的选择吗?

我已经对此做了大量研究,但几乎没有任何Swift示例,所以我一直在努力寻找一个好的例子来学习。

目前我已经设置了一个plist文件'Transactions.plist',其中的所有内容都是预设的'Root'。

这是我的数组代码,用户点击添加按钮时会调用该代码:

        arrayDataPayments.addObject(transactionName)
        arrayDataCost.addObject(finalUserBudget)
        arrayDataDate.addObject(transactionDateInputted)
        arrayDataValue.addObject(currencyDouble)

        let path = NSBundle.mainBundle().pathForResource("Transactions", ofType: "plist")
        arrayDataPayments.writeToFile(path!, atomically: true)
        arrayDataCost.writeToFile(path!, atomically: true)
        arrayDataDate.writeToFile(path!, atomically: true)
        arrayDataValue.writeToFile(path!, atomically: true)
        arrayDataImage.writeToFile(path!, atomically: true)

我是否需要在plist文件中设置任何内容,或者它可以保留原样并且我的代码是否正确?当我需要在表格视图中显示每个数组时,如何从plist文件中恢复每个数组?

1 个答案:

答案 0 :(得分:0)

首先,您不能写入应用程序包,而是要写入Documents目录。

如果文件路径良好,则每个arrayDataPayments.writeToFile都会过度使用前一个文件路径。您需要创建一个包含所有数组的plist。或者创建一个包含所有数组的Dictionary并编写该文件。每个数组项都需要符合NSCoding协议。