簡體   English   中英

2018年在Objective-C中向NSURL添加查詢字符串的方法

[英]2018 way to add a querystring to an NSURL in Objective-C

多年來,將查詢字符串添加到NSURL的最佳方法似乎已經發生了變化。 這是2009年的作品2014年的作品 對於這種看似簡單的任務,所有方法似乎都相當繁重。

以下代碼對我不起作用:

#define kWeatherStemURL [NSURL URLWithString: @"https://api.openweathermap.org/data/2.5/weather?units=imperial&APPID=xxxxxxx"];
NSURL* startingUrl = kWeatherStemURL;
NSString *querystring = @"&lat=35&lon=139";
NSURL *dataUrl = [NSURL URLWithString:[startingUrl.path stringByAppendingString:querystring]];

今天最好的方法是什么?

NSURLComponentsNSURLQueryItem是一種現代方法,如果需要,它甚至可以應用百分比編碼。

NSURLComponents *components = [NSURLComponents componentsWithString: @"https://api.openweathermap.org/data/2.5/weather"];
NSArray<NSURLQueryItem *> *queryItems = @[[NSURLQueryItem queryItemWithName:@"units" value:@"imperial"],
                                          [NSURLQueryItem queryItemWithName:@"APPID" value:@"xxxxxxx"],
                                          [NSURLQueryItem queryItemWithName:@"lat" value:@"35"],
                                          [NSURLQueryItem queryItemWithName:@"lon" value:@"139"]];
components.queryItems = queryItems;
NSURL *dataUrl = components.URL;

形成任何類型的NSURL的正確方法是使用NSURLComponents。 直接操作字符串總是錯誤的。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM