菜鸟教程小白 发表于 2022-12-12 10:28:15

ios - 构建查询字符串时出现 NSURLComponents 问题


                                            <p><p>我收到此错误:</p>

<pre><code>-: unrecognized selector sent to instance 0x7fab88c21750      
</code></pre>

<p>我用这段代码得到它:</p>

<pre><code>+ (NSString *)queryStringFromDictionary:(NSDictionary *)queryDictionary
{
    NSURLComponents *components = ;
    NSMutableArray *urlQueryComponents = ;

    for (NSString *key in )
    {
      NSString *value = queryDictionary;
      NSURLQueryItem *newQueryItem = ;
      ;
    }

    components.queryItems = urlQueryComponents; // HERE I GET THE ERROR
    return ;
}
</code></pre>

<p>如果出现错误,我的 queryDictionary 如下所示:</p>

<pre><code>{
    lat = &#34;49.3437442&#34;;
    lng = &#34;17.0571453&#34;;
    username = demo;
}
</code></pre>

<p>当我的 queryDictionary 看起来像下面一样时,它工作正常!</p>

<pre><code>{
    latlng = &#34;49.343744,17.057145&#34;;
    sensor = true;
}
</code></pre>

<p>所以我无法理解这个问题或如何解决它。有什么想法吗?</p></p>
                                    <br><hr><h1><strong>Best Answer-推荐答案</ strong></h1><br>
                                            <p><p>您正在传递一个包含 NSNumber 作为键或值的字典。 <code>queryWithItem:value:</code> 期望键和值都是字符串。 </p>

<p><strong>选项 1</strong></p>

<p>解决此问题的最简单方法是将所有键/值视为 NSObject,并使用 stringWithFormat 将它们转换为字符串。 </p>

<p>替换:</p>

<pre class="lang-c prettyprint-override"><code>NSURLQueryItem *newQueryItem = ;
</code></pre>

<p>与:</p>

<pre><code>NSURLQueryItem *newQueryItem = value:];
</code></pre>

<p><strong>选项 2</strong></p>

<p>如果您想坚持所有键都是字符串,我建议您使用泛型作为输入字典,如果找到非字符串键则使用 NSAssert(这样您就可以找到当前的错误)。</p>

<pre><code>+ (NSString *)queryStringFromDictionary:(NSDictionary &lt;NSString*, NSString*&gt; *)queryDictionary {
    NSURLComponents *components = ;
    NSMutableArray *urlQueryComponents = ;

    for (NSString *key in ) {
      NSString *value = queryDictionary;

      // confirm key/value are strings
      NSAssert(], @&#34;keys must be strings!&#34;);
      NSAssert(], @&#34;values must be strings!&#34;);

      NSURLQueryItem *newQueryItem = ;
      ;
    }

    components.queryItems = urlQueryComponents;
    return ;
}
</code></pre></p>
                                   
                                                <p style="font-size: 20px;">关于ios - 构建查询字符串时出现 NSURLComponents 问题,我们在Stack Overflow上找到一个类似的问题:
                                                        <a href="https://stackoverflow.com/questions/35189517/" rel="noreferrer noopener nofollow" style="color: red;">
                                                                https://stackoverflow.com/questions/35189517/
                                                        </a>
                                                </p>
                                       
页: [1]
查看完整版本: ios - 构建查询字符串时出现 NSURLComponents 问题