我正在尝试将NSURL * _Nullable转换为不可为空。你们中的任何人都知道我该怎么做?

这里是一些上下文:

我正在尝试使用ios-oauthconsumer,并且正在尝试初始化一些对象:

self.requestTokenRequest = [[OAMutableURLRequest alloc] initWithURL:_requestTokenUrl
                                                               consumer:_consumer
                                                                  token:nil
                                                                  realm:nil
                                                      signatureProvider:nil
                                                                  nonce:nil
                                                              timestamp:nil];

它们是通过以下init初始化的:
- (id)initWithURL:(NSURL *)aUrl
         consumer:(OAConsumer *)aConsumer
            token:(OAToken *)aToken
            realm:(NSString *)aRealm
signatureProvider:(id<OASignatureProviding>)aProvider
            nonce:(NSString *)aNonce
        timestamp:(NSString *)aTimestamp {
    if ((self = [self initWithURL:aUrl consumer:aConsumer token:aToken realm:aRealm signatureProvider:aProvider])) {
      nonce = [aNonce copy];
      timestamp = [aTimestamp copy];
    }

    return self;
}

如果我po我得到这个:

ios - Objective-C:从可为空的指针 &#39;NSURL * _Nullable&#39;到不可为空的指针类型 &#39;NSURL * _Nonnull&#39;-LMLPHP

我尝试使用该对象。我收到此警告:

ios - Objective-C:从可为空的指针 &#39;NSURL * _Nullable&#39;到不可为空的指针类型 &#39;NSURL * _Nonnull&#39;-LMLPHP
如果您知道如何将_Nullable转换为非Nullable对象,我将不胜感激。

最佳答案

这非常简单;您需要做的就是在方法调用中使用_requestTokenUrl之前,先将其分配给变量。这应该足够了:

NSURL *url = _requestTokenUrl;
self.requestTokenRequest = [[OAMutableURLRequest alloc] initWithURL:url
                                                           consumer:_consumer
                                                              token:nil
                                                              realm:nil
                                                  signatureProvider:nil
                                                              nonce:nil
                                                          timestamp:nil];

现在,请记住,这只是使警告静音。由于您的_requestTokenUrlnullable,并且该方法需要nonnull对象,因此您应该检查_requestTokenUrl是否实际上为非零。因此,更合适的版本如下所示:
NSURL *url = _requestTokenUrl;
if (url != nil) {
    self.requestTokenRequest = [[OAMutableURLRequest alloc] initWithURL:url
                                                               consumer:_consumer
                                                                  token:nil
                                                                  realm:nil
                                                      signatureProvider:nil
                                                                  nonce:nil
                                                              timestamp:nil];
} else {
    // `_requestTokenUrl` was nil, act accordingly
}

但是仍然需要分配给变量。

10-08 18:37