Objective-C:从可空指针'NSURL * _Nullable'到非可空指针类型'NSURL * _Nonnull'

时间:2017-05-02 22:00:30

标签: ios objective-c xcode8 nsurl

我正在尝试将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;
}

如果我知道我得到了这个:

enter image description here

我尝试使用该对象。我收到了这个警告:

enter image description here 如果你们中的任何人都知道如何将_Nullable转换为非Nullable对象,我将非常感激。

2 个答案:

答案 0 :(得分:5)

这非常简单=您需要做的就是在方法调用中使用它之前将$scope分配给变量。这应该足够了:

_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

但仍需要对变量进行分配。

答案 1 :(得分:2)

根据警告,它看起来像你的&#34; request.URL&#34;已经是NSURL对象了。编译器抱怨,因为您正在尝试使用需要字符串作为参数的方法。为什么你不能使用request.URL而不是尝试从中创建另一个NSURL对象?