Ios nil与预期的参数类型';[NSObject:AnyObject]';

Ios nil与预期的参数类型';[NSObject:AnyObject]';,ios,swift,Ios,Swift,我使用的是XCode 7.2和Swift 2.2。我有一个函数,它接受字典([NSObject:AnyObject])作为参数。但是,我想在不使用字典的情况下调用此函数,或者换言之,通过设置参数nil来调用此函数。如果我这样做,就会抛出: nil与预期的参数类型“[NSObject:AnyObject]”不兼容 我的代码是 self.silentPostData( persist.getObject( mdmiosagent_Constants.SERVERNAMEKEY) as S

我使用的是
XCode 7.2
Swift 2.2
。我有一个函数,它接受
字典([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
  )
)

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

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

只有可为空的类型(如可选类型或符合协议
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
  )
)

如果该方法需要一个非可选字典,请传递一个空字典。是否添加[NSObject:AnyObject]?对于函数的参数,什么类是
self
?这是一个外部库,不是苹果库吗?可能会将那一长行格式化为较小的行。请尝试
[:]
[NSObject:AnyObject]()
[]
是空
数组的缩写形式,空NSData是
NSData()
我尝试过,但抛出的错误与类型相同[NSObject:AnyObject]不能与数组文字一起使用。他的意思可能是
[:]
你必须做[:]才能得到一本
字典
是的,对不起;)坦克@Eendjewell,任何符合
nillitelavergable
的类型都可以是
nil
,如果它是
相等的
,也可以与之进行比较。当然,答案的其余部分是完美的:)