gpt4 book ai didi

objective-c - 在 Objective C 中从 NSDictionary 对象创建 URL 查询参数

转载 作者:IT老高 更新时间:2023-10-28 11:20:41 26 4
gpt4 key购买 nike

由于标准 Cocoa 库(NSURL、NSMutableURL、NSMutableURLRequest 等)中存在所有 URL 处理对象,我知道我必须忽略一种以编程方式编写 GET 请求的简单方法。

目前我正在手动附加“?”后面是由“&”连接的名称值对,但我所有的名称和值对都需要手动编码,因此 NSMutableURLRequest 在尝试连接到 URL 时不会完全失败。

这感觉就像我应该能够使用预烘焙 API 来实现的......有什么开箱即用的东西可以将查询参数的 NSDictionary 附加到 NSURL 吗?我还有其他方法可以解决这个问题吗?

最佳答案

在 iOS8 和 OS X 10.10 中引入了 NSURLQueryItem,可用于构建查询。来自 NSURLQueryItem 上的文档:

An NSURLQueryItem object represents a single name/value pair for an item in the query portion of a URL. You use query items with the queryItems property of an NSURLComponents object.

要创建一个使用指定的初始化器 queryItemWithName:value:,然后将它们添加到 NSURLComponents 以生成 NSURL。例如:

NSURLComponents *components = [NSURLComponents componentsWithString:@"http://stackoverflow.com"];
NSURLQueryItem *search = [NSURLQueryItem queryItemWithName:@"q" value:@"ios"];
NSURLQueryItem *count = [NSURLQueryItem queryItemWithName:@"count" value:@"10"];
components.queryItems = @[ search, count ];
NSURL *url = components.URL; // http://stackoverflow.com?q=ios&count=10

请注意,问号和 & 号是自动处理的。从参数字典创建 NSURL 非常简单:

NSDictionary *queryDictionary = @{ @"q": @"ios", @"count": @"10" };
NSMutableArray *queryItems = [NSMutableArray array];
for (NSString *key in queryDictionary) {
[queryItems addObject:[NSURLQueryItem queryItemWithName:key value:queryDictionary[key]]];
}
components.queryItems = queryItems;

我还写了 blog post关于如何使用 NSURLComponentsNSURLQueryItems 构建 URL。

关于objective-c - 在 Objective C 中从 NSDictionary 对象创建 URL 查询参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/718429/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com