如何将NSObject转换为NSDictionary或如何访问NSObject键Swift3
我对此很感兴趣我希望你能帮助我。如何将NSObject转换为NSDictionary或如何访问NSObject键Swift3
我在一个函数中recibe一个变量,这个变量是一个键值对象,我有下一个代码来设置这个var。
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)
我不想要知道什么是错的,或者我怎样才能得到这个对象的值。
由于对象似乎是一个
字典
阵列将其转换为
字典
阵列和使用关键认购字典
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
...
}
在斯威夫特除非编译器告诉不要投对象NSObject
您。
我该如何投入字典? :( –
我的代码**没有将对象转换成Swift字典('[String:Any]')。不要在Swift中使用NSArray/NSDictionary,你丢掉强类型信息。 – vadian
好吧,我把你的代码和我调试它,但它跳转if语句 –
你的回复说它是一个字典数组。你需要做的
params?[0].value(forKey...)
但是你需要在此之前将其强制转换为
chnage它
command.arguments[0] as? NSArray
由于vadian建议,尽量不要使用的NSArray。使用更像一个快速阵列!
这是一个字典数组。你需要做参数?[0] .value(forKey ...) –
如果我添加[0]抛出NSObject没有下标成员 –
它因为你已经铸造它作为NSObject。 chnage它以command.arguments [0]为? NSArray –