【问题标题】:Coinbase iOS SDK Completion BlockCoinbase iOS SDK 完成块
【发布时间】:2025-12-29 03:55:06
【问题描述】:

我正在使用 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);

当我尝试运行代码时,我收到一条无用的错误消息:

有人知道为什么这可能会导致问题吗?

【问题讨论】:

    标签: ios swift coinbase-api


    【解决方案1】:

    演员不应该在那里。而且您不需要完成处理程序参数中的类型。这应该有效:

    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
    
    }
    

    【讨论】: