如何在Swift中将NSDictionary转换为NSObject?

时间:2016-04-29 08:37:51

标签: ios swift nsdictionary nsobject

我在viewcontroller中有一个元变量XML::LibXML,我打算能够从父视图控制器接收推送它的任何类型的对象。我还有一个类型变量,它将决定我如何在视图控制器中进行类型转换并解释这个NSObject

问题是当我尝试在父级中NSObject转换NSDictionary时,Xcode警告说这种类型转换总是会失败。

我尝试过的代码:

NSObject

但相反的类型转换始终有效:

childVc.meta = ["title":"test"] as! NSObject; // warning: cast from '[String:String?]' to unrelated type 'NSObject' always fails.

let data = ["title":"test"];
childVc.meta = data as! NSObject; // warning: cast from '[String:String?]' to unrelated type 'NSObject' always fails.


let data = ["title":"test"];
childVc.meta = data as NSObject; // error: cannot convert value of type '[String:String?]' to type 'NSObject' in coercion.


let data = ["title":"test"] as! NSObject; // warning: cast from '[String:String?]' to unrelated type 'NSObject' always fails.
childVc.meta = data;

哦,顺便说一句,我知道swift最后不需要分号。它只是我从obj-c的习惯,而且看起来很快就不关心它,所以不要让这个分号分散我们的注意力。 :)

2 个答案:

答案 0 :(得分:1)

你在字典中有一个可选值,似乎不是NSDictionary。

  // warning: cast from '[String:String?]'

尝试将其转换为AnyObject

答案 1 :(得分:0)

请尝试使用这样:

var traitsDic : NSDictionary! = ["title":"test"]
var traits = traitsDic as Dictionary<String, AnyObject>