嗨,我一直在与一个快速错误作斗争,因为我无法匹配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