Json 无法强制转换类型为';斯威夫特词典<;Swift.String,协议<&燃气轮机&燃气轮机';至';Swift.AnyObject';
我正在尝试将我的Json 无法强制转换类型为';斯威夫特词典<;Swift.String,协议<&燃气轮机&燃气轮机';至';Swift.AnyObject';,json,swift,dictionary,swift2,Json,Swift,Dictionary,Swift2,我正在尝试将我的[String:Any]转换为JSON格式,然后再将其发送到API var orderRequestUserValues : [String : Any] = [ "ClientID": "\(clientID)", "UserName": "\(userName)",
[String:Any]
转换为JSON格式,然后再将其发送到API
var orderRequestUserValues : [String : Any] = [ "ClientID": "\(clientID)",
"UserName": "\(userName)",
"Password": "\(password)",
"ModuleID": "StockProcessing",
"FunctionID": "SetStockOrder",
"TransmissionFlags": 32,
"TransmissionMethod": 5
]
var requestParameters : [String : Any] = [ "ActivityType": 2,
"ActivityReference1": "",
"ActivityReference2": "",
"Notes": "",
"ProcessingUserUnique": 1
]
requestParameters.updateValue(usedObjectDictionaries, forKey: "ListofStockActivityData")
orderRequestUserValues.updateValue(requestParameters, forKey: "RequestParameters")
但由于我的强制转换方法需要一个AnyObject
,我尝试强制转换它,但收到一个错误:
无法将“Swift.Dictionary>”类型的值强制转换为“Swift.AnyObject”
我必须使用另一种转换为JSON格式的方法,或者我最好的选择。
[String:Any]
(也称为字典
)是一个结构,而不是一个对象。因此,它不能强制转换为任何对象
但是,Dictionary
(明确地)通过强制转换桥接到NSDictionary
:
let newDict = try NSJSONSerialization.dataWithJSONObject(orderRequestUserValues as NSDictionary, options: NSJSONWritingOptions.PrettyPrinted)
您正在使用Swift 2,您遇到的问题是
Any
无法转换为AnyObject
。无法从Any
向下转换到AnyObject
。因此,将字典声明为[String:AnyObject]
,而不是[String:Any]
var orderRequestUserValues : [String : AnyObject] = [ "ClientID": "\(clientID)",
"UserName": "\(userName)",
"Password": "\(password)",
"ModuleID": "StockProcessing",
"FunctionID": "SetStockOrder",
"TransmissionFlags": 32,
"TransmissionMethod": 5]
在Swift 3中,这种方式对我来说非常有效
让mutableDict=NSMutableDictionary(dictionary:newDictionaryResult!)我的最佳选择是什么?无法将“[String:Any]”类型的值转换为强制操作中的“dictionary”,我输入了一个错误。我的意思是把它写成字典。根据前面的一句话,你本可以学习它:首先必须将[String:Any]更改为[String:AnyObject]才能工作!!!!!!!但是有一个警告是“从“[String:AnyHashable]”到“NSDictionary”的条件转换总是成功的”(p as?NSDictionary)!其中p是[String:AnyHashable]是的,它是(:只是在读取JSON@LenxvanZyl为此,您可以在上发布另一个问题。:)
var orderRequestUserValues : [String : AnyObject] = [ "ClientID": "\(clientID)",
"UserName": "\(userName)",
"Password": "\(password)",
"ModuleID": "StockProcessing",
"FunctionID": "SetStockOrder",
"TransmissionFlags": 32,
"TransmissionMethod": 5]