如何将NSObject转换为NSDictionary或如何访问NSObject键Swift3

时间:2017-06-05 20:38:27

标签: swift3

我是新手,我希望你能帮助我。

我在一个函数中重新定义了一个变量,这个变量是一个键值对象,我有下一个代码来设置这个变量。

let params = command.arguments[0] as? NSObject

如果我打印此变量,结果为:

Optional(<__NSArrayM 0x17024fea0>(
{
    coordinate = "xxxxxxx,xxxxx";
    identifier = cordstrab;
    latitude = "xxxxxxxx";
    longitude = "xxxxxxx";
    note = Trabajo;
    radius = 5;
    type = onEntry;
}
)
)

我希望能够访问数据,我正在尝试使用

let lat = (params?.value(forKey: "latitude") as! String)

我不知道出了什么问题,或者我怎样才能得到这个对象的值。

2 个答案:

答案 0 :(得分:3)

由于对象似乎是字典数组,所以将其转换为字典数组并使用字典的密钥订阅

if let params = command.arguments[0] as? [[String:Any]], let dict = params.first {
   let lat = dict["latitude"] as! String // the output is clearly string
   let long = dict["longitude"] as! String
   ...
}

除非编译器告诉你,否则不要在Swift中将对象强制转换为NSObject

答案 1 :(得分:1)

你的回答说这是一系列词典。你需要做什么

  params?[0].value(forKey...)

但在此之前,您需要将其转换为

chnage it to

  command.arguments[0] as? NSArray

正如vadian建议的那样,尽量不要使用NSArray。使用更像是快速阵列!