iOS 8 और ओएस एक्स 10.10 में प्रस्तुत NSURLQueryItem
है, जिन तक प्रश्नों के निर्माण के लिए इस्तेमाल किया जा सकता पार्स करने के लिए उपयोग करें। NSURLQueryItem पर डॉक्स से:
एक NSURLQueryItem वस्तु एक यूआरएल की क्वेरी भाग में एक आइटम के लिए एक एकल नाम/मान युग्म प्रतिनिधित्व करता है। आप NSRLComponents ऑब्जेक्ट की क्वेरी इटम्स संपत्ति के साथ क्वेरी आइटम का उपयोग करते हैं।
आप पहली बार NSURLComponents
बनाने के द्वारा एक URL से क्वेरी आइटम प्राप्त कर सकते हैं:
NSURL *url = [NSURL URLWithString:@"http://stackoverflow.com?q=ios&count=10"];
NSURLComponents *components = [NSURLComponents componentsWithURL:url
resolvingAgainstBaseURL:YES];
for (NSURLQueryItem *item in components.queryItems) {
NSLog(@"name: %@, value: %@", item.name, item.value);
}
// name: q, value: ios
// name: count, value: 10
ध्यान दें कि वे -queryItems
के लिए मान एक सरणी, नहीं एक शब्दकोश है। ऐसा इसलिए है क्योंकि निम्नलिखित एक मान्य यूआरएल है। दो समान "कुंजी", foo
पर ध्यान दें।
http://google.com?foo=bar&foo=baz
क्वेरी आइटम के माध्यम से एक यूआरएल बनाने के लिए, नामित प्रारंभकर्ता queryItemWithName:value:
का उपयोग करें और फिर उन्हें NSURLComponents
में जोड़ने के लिए एक NSURL
उत्पन्न करने के लिए। उदाहरण के लिए:
NSString *urlString = @"http://stackoverflow.com";
NSURLComponents *components = [NSURLComponents componentsWithString:urlString];
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
ध्यान दें कि प्रश्न चिह्न और एम्परसांड स्वचालित रूप से संभाले जाते हैं।
NSDictionary *queryDictionary = @{ @"q": @"ios", @"count": @"10" };
NSMutableArray *queryItems = [NSMutableArray array];
for (NSString *key in queryDictionary) {
NSURLQueryItem *item = [NSURLQueryItem queryItemWithName:key
value:queryDictionary[key]];
[queryItems addObject:item];
}
components.queryItems = queryItems;
मैं भी अधिक विवरण के साथ एक ब्लॉग पोस्ट, Building NSURLs with NSURLQueryItems लिखा है: मानकों का एक शब्दकोश से एक NSURL
बनाने के रूप में सरल रूप में है।
अच्छा सवाल। क्या आपका मतलब है: यदि यूआरएल "/ partA/partB/partC" है, तो आप "0 => partA, 1 => partB, 2 => partC" चाहते हैं। यदि यूआरएल "/ foo? PartA = ए और partB = B" आप चाहते हैं "partA => ए, partB => B"। क्या होगा अगर यूआरएल "/ partA/partB/partC? Foo = bar और ooga = booga" है? एक उदाहरण में, प्रश्न में इकाई की पहचान करने के लिए आवश्यक महत्वपूर्ण जानकारी एक क्वेरी स्ट्रिंग में पारित की जा रही है ... दूसरे उदाहरण में, पहचानने वाली जानकारी पथ में आराम-शैली को पारित कर दी जाती है। –
मेरा मतलब है कि मैं पथ और क्वेरी को अलग से पार्स करना चाहता हूं। यह एक ऐसा कार्य नहीं होना चाहिए जो उन दो कार्यों को जोड़ता है। स्पष्टीकरण के लिए नीचे दिए गए कोड को देखें। अगर कोई मौजूदा कार्यान्वयन के साथ जवाब देता है, तो मुझे अभी भी इसे स्वीकार करने में खुशी होगी। – DougW
ध्यान में रखना एक बात यह है कि यह एक पूरी तरह से मान्य क्वेरी स्ट्रिंग है: "x = 1 और x = 0 और x = foo", इसलिए एक NSDictionary सबसे अच्छा प्रतिनिधित्व नहीं हो सकता है (जब तक कि आप मानों के रूप में सरणी का उपयोग नहीं कर रहे हों)। – n8gray