Swift ErroR语言 调用 SimpleAuth 时的额外参数"选项"



嗨,我一直在与一个快速错误作斗争,因为我无法匹配objective-c方法的参数

    SimpleAuth.authorize("instagram", 
       options: ["scope" : "likes"], completion: { 
          (responseObject : NSDictionary!, error : NSError!) -> Void in
          self.accessToken = responseObject["credentials"]["token"]
          ......
    })

//error调用中的额外参数"options"

声明为:

  + (void)authorize:(NSString *)provider options:(NSDictionary *)options completion:(SimpleAuthRequestHandler)completion;

代码完成是:

  SimpleAuth.authorize(<#provider: String!#>, options: <#[NSObject : AnyObject]!#>, completion: <#SimpleAuthRequestHandler!##(AnyObject!, NSError!) -> Void#>)

我尝试过类型转换、下转换、声明为单独的变量,但仍然无法实现。

任何想法,都将不胜感激

这是您对完成块的定义。SimpleAuthRequestHandler定义为:

typedef void (^SimpleAuthRequestHandler) (id responseObject, NSError *error);

但您的完成块/闭包定义为:

(responseObject : NSDictionary!, error : NSError!) -> Void in

您不能在不显式强制转换的情况下将类型从id(Swift中的AnyObject)更改为NSDictionary!

SimpleAuth.authorize("instagram", options: ["scope" : "likes"], completion: {
    (responseObject : AnyObject!, error : NSError!) -> Void in
    /* ... */
})

然后,您可以将responseObject设置为具有演员阵容的NSDictionary

var response = responseObject as NSDictionary

最新更新