在iOS Swift中存储一组键值对的持久存储

时间:2015-10-01 08:36:53

标签: ios swift2 realm persistent-storage

我想为我的应用程序提供持久存储(持久浏览视图),我遇到了Realm,但现在我认为它对我想做的事情来说太沉重了。

基本上我有JSON格式的数据(每次应用程序启动时都会获取数据,我想将它存储在变量中(在字典中),这样我就可以从我的iPad应用程序的不同屏幕上访问它了。关注应用程序关闭时数据是否丢失,我只是希望在应用程序运行时数据在我的应用程序的不同屏幕(视图)中可用)

示例数据

{
    "pid": 23,
    "name": "some name",
    "cities": [ {
                  "id": 1,
                  "name": "Bangalore"
                },
                {
                  "id": 2,
                  "name": "Mysore"
                }
                { //continues for about 100 more city entries
                }
              ],
    "hospital": {
                  "id": 234, 
                  "name": "newHorizon", 
                  "type": "nursing home"
                }
}

Realm是一个合适的选择吗?如果是,我如何从我的示例数据中提取hospital->name

如果没有,在这种情况下适合哪种存储?

我正在寻找与localStorage Javascript相同的ios

1 个答案:

答案 0 :(得分:2)

即使应用程序未处于活动状态,Realm也会保留数据。我想你不在乎。我建议创建一个会话对象(单个对象),其中Dictionary作为数据属性之一。

将您的JSON转换为Dictionary并将其保存在您的单例会话对象中。像myData["Hospital"]["name"]

一样抓取它

编辑:关于OP请求

第1步:设置单例

//
//  MySession.swift
//

import Foundation

class MySession {

    static let sharedInstance = MySession()

    var myData = Dictionary<String,AnyObject>()
}

第2步:在第1课中以单身人士保存数据

var dict = Dictionary<String,AnyObject>()
dict["pid"] = "123"
dict["hospital"] = ["id":"234", "name":"newHorizon", "type":"nursing home"]

MySession.sharedInstance.myData = dict

第3步:在第2课中获取已保存的数据

let myData = MySession.sharedInstance.myData as Dictionary
let hospitalDict = myData["hospital"]


if let name = hospitalDict?["name"] as? String {
    print(name)
}