我是新手,我希望你能帮助我。
我在一个函数中重新定义了一个变量,这个变量是一个键值对象,我有下一个代码来设置这个变量。
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)
我不知道出了什么问题,或者我怎样才能得到这个对象的值。
答案 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。使用更像是快速阵列!