我使用的是Swift 4,我试图通过Coinbase的SDK使用OAuth。
这就是我打电话给完成OAuth的最后一步:
CoinbaseOAuth.finishAuthentication(for: url, clientId: Constants.CLIENT_ID, clientSecret: Constants.CLIENT_SECRET, completion: { (result : AnyObject?, error: NSError?) -> Void in
} as! CoinbaseCompletionBlock)
当我第一次输入时,我没有as! Coinbase CompletionBlock
但是Xcode抱怨说我需要添加它。
当我查看方法签名时,我看到完成块类型:
+ (void)finishOAuthAuthenticationForUrl:(NSURL *)url
clientId:(NSString *)clientId
clientSecret:(NSString *)clientSecret
completion:(CoinbaseCompletionBlock)completion;
所以我深入挖掘并查看CoinbaseCompletionBlock
定义:
typedef void (^CoinbaseCompletionBlock)(id response, NSError *error);
有谁知道为什么这可能导致问题?
演员不应该在那里。并且您不需要完成处理程序参数中的类型。这应该工作:
CoinbaseOAuth.finishAuthentication(for: url, clientId: Constants.CLIENT_ID, clientSecret: Constants.CLIENT_SECRET, completion: { (result, error) in
})
你应该能够放弃completion:
CoinbaseOAuth.finishAuthentication(for: url, clientId: Constants.CLIENT_ID, clientSecret: Constants.CLIENT_SECRET) { (result, error) in
}