我正在尝试将NSURL * _Nullable转换为不可为空.任何人都知道我怎么能这样做? 这是一些背景: 我正在尝试使用ios-oauthconsumer,我正在尝试初始化一些对象: self.requestTokenRequest = [[OAMutableU
这是一些背景:
我正在尝试使用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; }
如果我说我得到这个:
我试着使用那个对象.我收到这个警告:
如果你们中的任何人都知道如何将_Nullable转换为非Nullable对象,我将非常感激.
NSURL *url = _requestTokenUrl; self.requestTokenRequest = [[OAMutableURLRequest alloc] initWithURL:url consumer:_consumer token:nil realm:nil signatureProvider:nil nonce:nil timestamp:nil];
现在,请记住,这只会使警告无声.由于_requestTokenUrl是可空的并且该方法需要一个非空对象,因此您应该检查_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 }
但是仍然需要对变量进行分配.