nil与预期的参数类型'[NSObject:AnyObject]不兼容

时间:2016-03-21 11:12:57

标签: ios swift

我正在使用XCode 7.2Swift 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
  )
)

冲突中的参数是代码中的命名参数。提前谢谢。

2 个答案:

答案 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)

只需在您的函数中传递此[:]即可。