[英]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]];
今天最好的方法是什么?
NSURLComponents
和NSURLQueryItem
是一種現代方法,如果需要,它甚至可以應用百分比編碼。
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.