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 = "49.3437442";
lng = "17.0571453";
username = demo;
}
</code></pre>
<p>当我的 queryDictionary 看起来像下面一样时,它工作正常!</p>
<pre><code>{
latlng = "49.343744,17.057145";
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 <NSString*, NSString*> *)queryDictionary {
NSURLComponents *components = ;
NSMutableArray *urlQueryComponents = ;
for (NSString *key in ) {
NSString *value = queryDictionary;
// confirm key/value are strings
NSAssert(], @"keys must be strings!");
NSAssert(], @"values must be strings!");
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]