2016-11-04 75 views
1

为什么这是可能的:无法将类型的价值“的NSDictionary”到指定的类型“词典”

var orderRequestUserValues : Dictionary = [ "ClientID": "TEST", 
               "UserName": "sysadmin", 
               "Password": "123456", 
               "ModuleID": "StockProcessing", 
               "FunctionID": "SetStockActivity", 
               "TransmissionFlags": 32, 
               "TransmissionMethod": 5 
    ] 

但是,这并不:

let userName : String = (dataSourceForUserInfo.last?.UserName)! 
let password : String = (dataSourceForUserInfo.last?.Password)! 
let clientID : String = (dataSourceForUserInfo.last?.ClientID)! 
var orderRequestUserValues : Dictionary = [ "ClientID": "\(clientID)", 
               "UserName": "\(userName)", 
               "Password": "\(password)", 
               "ModuleID": "StockProcessing", 
               "FunctionID": "SetStockOrder", 
               "TransmissionFlags": 32, 
               "TransmissionMethod": 5 


    ] 

四处错误:无法将类型的价值“ NSDictionary'指定类型'字典'

我需要它这样工作,因为我必须像这样附加数据:

orderRequestUserValues.updateValue(requestParameters, forKey: "RequestParameters") 
+0

尝试用clientID替换“\\(clientID)” – picciano

+0

为什么使用Swift 2? – Alexander

回答

1

这个应该是你想要什么

var orderRequestUserValues : [String : Any] = [ 
    "ClientID": "TEST", 
    "UserName": "sysadmin", 
    "Password": "123456", 
    "ModuleID": "StockProcessing", 
    "FunctionID": "SetStockActivity", 
    "TransmissionFlags": 32, 
    "TransmissionMethod": 5 
] 

而这也工作:

let orderRequestUserValues : [String : Any] = [ 
    "ClientID": "\(clientID)", 
    "UserName": "\(userName)", 
    "Password": "\(password)", 
    "ModuleID": "StockProcessing", 
    "FunctionID": "SetStockOrder", 
    "TransmissionFlags": 32, 
    "TransmissionMethod": 5 
] 
0

对于swift2或swift3你需要指定的键和值的字典类型。因此,使用下面的代码 -

 let userName : String = (dataSourceForUserInfo.last?.UserName)! 
     let password : String = (dataSourceForUserInfo.last?.Password)! 
     let clientID : String = (dataSourceForUserInfo.last?.ClientID)! 
     let orderRequestUserValues : Dictionary = [ "ClientID": "\(clientID)", 
                 "UserName": "\(userName)", 
                 "Password": "\(password)", 
                 "ModuleID": "StockProcessing", 
                 "FunctionID": "SetStockOrder", 
                 "TransmissionFlags": 32, 
                 "TransmissionMethod": 5 


      ] as [String : Any] 
+2

':Dictionary'是不必要的,甚至可能是一个错误。 – Alexander

0

我们不能写的NSDictionary,而不是解释。它也可以工作。

我们需要停止在swift中使用NSDictionary?其中Dictionary是Swift的本地结构

let orderRequestUserValues : NSDictionary = ["ClientID": "\(clientID)", 
                "UserName": "\(userName)", 
                "Password": "\(password)", 
                "ModuleID": "StockProcessing", 
                "FunctionID": "SetStockOrder", 
                "TransmissionFlags": 32, 
                "TransmissionMethod": 5] 


    let name = orderRequestUserValues.object(forKey: "Username") 
    print(name) 
相关问题