我正在尝试将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我得到这个:
我尝试使用该对象。我收到此警告:
如果您知道如何将_Nullable转换为非Nullable对象,我将不胜感激。
最佳答案
这非常简单;您需要做的就是在方法调用中使用_requestTokenUrl
之前,先将其分配给变量。这应该足够了:
NSURL *url = _requestTokenUrl;
self.requestTokenRequest = [[OAMutableURLRequest alloc] initWithURL:url
consumer:_consumer
token:nil
realm:nil
signatureProvider:nil
nonce:nil
timestamp:nil];
现在,请记住,这只是使警告静音。由于您的
_requestTokenUrl
是nullable
,并且该方法需要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
}
但是仍然需要分配给变量。