如何在 Swift 中将 NSDictionary 转换为 NSObject?
How to convert NSDictionary to NSObject in Swift?
我在 viewcontroller 中有一个元变量 NSObject
,我打算能够从推送它的父 viewcontroller 接收任何类型的对象。我还有一个类型变量,它将决定我如何在 viewcontroller.
中类型转换和解释这个 NSObject
问题是当我试图在父级中将 NSDictionary
转换为 NSObject
时,Xcode 警告说这种类型转换总是会失败。
我试过的代码:
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;
但是相反的类型转换总是有效的:
let unwrappedMeta = self.meta as! NSDictionary;
哦,顺便说一句,我知道 swift 不需要在末尾使用分号。这只是我对 obj-c 的习惯,swift 看起来并不关心它,所以不要让这个分号分散我们的注意力。 :)
请尝试这样使用:
var traitsDic : NSDictionary! = ["title":"test"]
var traits = traitsDic as Dictionary<String, AnyObject>
您在字典中有一个可选值,似乎不是 NSDictionary。
// warning: cast from '[String:String?]'
尝试将其转换为 AnyObject
我在 viewcontroller 中有一个元变量 NSObject
,我打算能够从推送它的父 viewcontroller 接收任何类型的对象。我还有一个类型变量,它将决定我如何在 viewcontroller.
NSObject
问题是当我试图在父级中将 NSDictionary
转换为 NSObject
时,Xcode 警告说这种类型转换总是会失败。
我试过的代码:
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;
但是相反的类型转换总是有效的:
let unwrappedMeta = self.meta as! NSDictionary;
哦,顺便说一句,我知道 swift 不需要在末尾使用分号。这只是我对 obj-c 的习惯,swift 看起来并不关心它,所以不要让这个分号分散我们的注意力。 :)
请尝试这样使用:
var traitsDic : NSDictionary! = ["title":"test"]
var traits = traitsDic as Dictionary<String, AnyObject>
您在字典中有一个可选值,似乎不是 NSDictionary。
// warning: cast from '[String:String?]'
尝试将其转换为 AnyObject