我正在使用XCode 7.2
和Swift 2.2
。我有一个接受dictionary([NSObject : AnyObject])
作为参数的函数。但是,我想在不使用该字典的情况下调用此函数,换句话说,通过使参数为nil。如果我这样做,就会抛出:
nil与预期的参数类型'[NSObject:AnyObject]'
不兼容
我的代码是
self.silentPostData(
persist.getObject(
mdmiosagent_Constants.SERVERNAMEKEY) as String,
serverport: persist.getObject(mdmiosagent_Constants.SERVERPORTKEY) as String,
serverurl: mdmiosagent_Constants.NATIVE_APP_SERVLET,
parameters: nil ,
urldata: jsonData
)
)
冲突中的参数是代码中的命名参数。提前谢谢。
答案 0 :(得分:16)
只有可以为空的类型(例如符合协议NilLiteralConvertible
的选项或类型)可以是nil
,或者与nil
进行比较。因此,您有以下选项:
<强> 1。使参数可选
将函数的参数转换为[NSObject : AnyObject]?
<强> 2。传递一个空字典
只需致电:
self.silentPostData(
persist.getObject(
mdmiosagent_Constants.SERVERNAMEKEY) as String,
serverport: persist.getObject(mdmiosagent_Constants.SERVERPORTKEY) as String,
serverurl: mdmiosagent_Constants.NATIVE_APP_SERVLET,
parameters: [:],
urldata: jsonData
)
)
答案 1 :(得分:7)
只需在您的函数中传递此[:]
即可。