iOS非持久性数据结构

时间:2017-04-08 12:01:10

标签: ios swift

我想在我的应用中存储电话号码列表。目前有53个,我希望存储以下信息。

  • [a]
  • Country
  • TollNumber
  • TollFreeNumber?
  • TollNumber2?

它不会经常更新,现在可能会手动完成,可能会在将来通过API完成。不需要持久存储。我通常只是将其插入ISOCode数组或[[String]],但我很想知道各种非持久性解决方案的优缺点是什么那里。

例如,将这些存储在XML或JSON格式中会有优势/缺点吗,尽管不需要持久性,是否有值得考虑的持久解决方案,是否有更适合处理静态数据集的Swift结构?

2 个答案:

答案 0 :(得分:1)

一种可行且易于实施的解决方案是将您的数据转换为JSON并将其保存到文件系统。它允许您稍后从API获取phoneNumbers并将其存储在本地。

您还可以查看将它们存储在.plist文件中并从中读取。在我看来,CoreData或Realm对你的情况来说太过分了。

答案 1 :(得分:1)

如果您对保留给定信息的编辑(CRUD)不感兴趣,那么创建一个模型作为数据的表示(模板)将是一个很好的选择,例如:

// of course determining what's the data type of each property is up to you,
// or even giving them an initial value...
struct MyModel {
    var country: String?
    var tollNumber: String?
    var TollFreeNumber: String?
    var TollNumber2: String?
    var ISOCode: String?
}


let containerArray = [MyModel(country: "country", tollNumber: "tollNumber", TollFreeNumber: "TollFreeNumber", TollNumber2: "TollNumber2", ISOCode: "ISOCode"),
                      MyModel(country: "country", tollNumber: "tollNumber", TollFreeNumber: "TollFreeNumber", TollNumber2: "TollNumber2", ISOCode: "ISOCode"),
                      MyModel(country: "country", tollNumber: "tollNumber", TollFreeNumber: "TollFreeNumber", TollNumber2: "TollNumber2", ISOCode: "ISOCode"), ...]

如果您需要从文件中读取给定的数据,我认为 .plist 文件将是一个不错的选择,从最终用户的角度来看,它很容易使用,也可以检查这Q&A

尽管直接从结构实例中读取数据(如第一种方法中所述)应该更好(速度更快),但使用.plist文件的好处可能是编辑的简易性,你所要做的就是更换更新后的文件!'

备注:如果我们谈论的是少量数据,那么速度问题就不会引人注目 - 几乎没有。

另外:如果您正在寻找一种机制来将数据保存到您的应用程序中,您可能需要查看Q&A

希望这会有所帮助。