首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >调用“OR”[NSObject: AnyObject]!‘’中的额外参数'foo‘不是'Dictionary<Key,Value>’的一个子类型。

调用“OR”[NSObject: AnyObject]!‘’中的额外参数'foo‘不是'Dictionary<Key,Value>’的一个子类型。
EN

Stack Overflow用户
提问于 2015-01-27 20:03:34
回答 3查看 445关注 0票数 0

我读过所有我能找到的“呼叫中的额外论点”的帖子,但我仍在与这篇文章不期而遇。我有这样一种方法:

代码语言:javascript
运行
复制
// Objective-C
+ (void)get:(NSString *)url params:(NSDictionary *)params completion:(NetworkCompletion)completion

// Swift autocomplete
GenericWebService.get(url: String!, params: [NSObject : AnyObject]!, completion: (([NSObject : AnyObject]!, NSError!) -> Void)!)

我第一次尝试在Swift中使用这个方法看起来是这样的.

代码语言:javascript
运行
复制
GenericWebService.get("", params: ["foo":"bar"], completion: {
    (responseDictionary: Dictionary, connectionError: NSError) -> Void in
        // foo
    })

...and产生了错误Extra argument 'params' in call

因此,我试图为params ([NSObject:AnyObject])提供一个更好的类型匹配。

代码语言:javascript
运行
复制
let params: [NSObject:AnyObject] = ["foo":"bar"]
GenericWebService.getURL("", params: params, completion: {
    (responseDictionary: Dictionary, connectionError: NSError) -> Void in
        // foo
    })

...which产生'[NSObject : AnyObject]!' is not a subtype of 'Dictionary<Key, Value>'

我犯了什么愚蠢的错误?)

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2015-01-27 20:26:25

问题在于终结论。如果使参数完全匹配,则可以:

代码语言:javascript
运行
复制
GenericWebService.get("", params: ["foo":"bar"]) {
    (responseDictionary: [NSObject:AnyObject]!, connectionError: NSError!) -> Void in
    // foo
}

但是,与其显式地键入它们,不如让Swift为您做这件事更容易:

代码语言:javascript
运行
复制
GenericWebService.get("", params: ["foo":"bar"]) {
    responseDictionary, connectionError in
    // foo
}
票数 1
EN

Stack Overflow用户

发布于 2015-01-27 20:23:43

我认为您的第二个错误是抱怨完成块的类型,而不是params参数的类型。这对我来说很管用:

代码语言:javascript
运行
复制
GenericWebService.get("", params: ["foo": "bar"], completion: {
    (a: [NSObject: AnyObject]!, b: NSError!) in
})
票数 1
EN

Stack Overflow用户

发布于 2015-01-27 20:49:37

在操场上,我发现这个语法也正确编译:

代码语言:javascript
运行
复制
GenericWebService.get("", params: ["foo" : "bar"], completion: {
        (responseDictionary _: [NSObject : AnyObject]!, connectionError _: NSError!) -> Void in
    })
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/28178987

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档