【问题标题】:Save data into array [Swift]将数据保存到数组 [Swift]
【发布时间】:2018-09-20 08:01:02
【问题描述】:
value:Optional({
"-LMpUBhCddHrShVWPVAx" =     {
    mobile = "(555) 564-8583";
    name = "Kate Bell";
};
"-LMpUBhD9-sX8p2Y3EuB" =     {
    mobile = "(408) 555-5270";
    name = "Daniel Higgins Jr.";
};
"-LMpUBhD9-sX8p2Y3EuC" =     {
    mobile = "888-555-5512";
    name = "John Appleseed";
};
})

我有这组从 Firebase 获得的字典数据。但是如何将其保存到数组中?我想要的数据是手机和姓名。

这是我的代码:

func retrieveLists() {

    ref = Database.database().reference()

    ref.child("users").child("60123456789").child("contact_lists").observeSingleEvent(of: .value, with: { (snapshot) in

        let value = snapshot.value as? NSDictionary
        print("value:\(value)")

    }) { (error) in

        print(error.localizedDescription)

    }


    }

【问题讨论】:

  • 那么你在 print("value:(value)") 行中得到了什么日志

标签: swift firebase dictionary firebase-realtime-database


【解决方案1】:

使用以下代码作为参考:-

if let firebaseDic = snapshot.value as? [String: AnyObject] {
    for (_, value) in firebaseDic.enumerated() {
        let mobileNumber = value.value["mobile"]!! as! String                               
    }
}

【讨论】:

  • 不要强制解包变量,这可能会导致应用崩溃
  • Yes 需要使用 if let 解包
【解决方案2】:

你可以试试

struct Item {
    let mobile:String
    let name:String
}

//

var content = [Item]()

for k in value.allKeys {

    if let res = value[k] as? [String:String] , let mobile = res["mobile"] , let name = res["name"] {

        content.append(Item(mobile: mobile, name: name))
    }

}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-08-19
    • 1970-01-01
    • 1970-01-01
    • 2015-06-15
    • 1970-01-01
    • 1970-01-01
    • 2018-10-10
    • 1970-01-01
    相关资源
    最近更新 更多