उद्देश्य- c में एक NSURL के भाग प्राप्त करें


114

मैं के मूल्य के साथ एक NSString है

http://digg.com/news/business/24hr

मैं तीसरे स्तर से पहले सब कुछ कैसे प्राप्त कर सकता हूं?

http://digg.com/news/

जवाबों:


435

यह बिलकुल तीसरे स्तर की बात नहीं है, तुम मन हो। URL इस तरह विभाजित होता है:

  • प्रोटोकॉल या योजना (यहां, http)
  • ://सीमांकक
  • उपयोगकर्ता नाम और पासवर्ड (यहाँ कोई भी नहीं है, लेकिन यह हो सकता है username:password@hostname)
  • होस्ट नाम (यहाँ, digg.com)
  • पोर्ट ( :80उदाहरण के लिए डोमेन नाम के बाद होगा )
  • पथ (यहाँ, /news/business/24hr)
  • पैरामीटर स्ट्रिंग (अर्धविराम के बाद कुछ भी)
  • क्वेरी स्ट्रिंग (यदि आपके पास जैसे GET पैरामीटर होते हैं ?foo=bar&baz=frob)
  • टुकड़ा (यदि आप लिंक में एक लंगर की तरह होगा, जैसे #foobar)।

"पूरी तरह से चित्रित" URL इस तरह दिखेगा:

http://foobar:nicate@example.com:8080/some/path/file.html;params-here?foo=bar#baz

NSURLएक्सेसरों की एक विस्तृत श्रृंखला है। आप उन्हें NSURLवर्ग, URL के भाग तक पहुँच के लिए दस्तावेज़ में देख सकते हैं । त्वरित संदर्भ के लिए:

  • -[NSURL scheme] = http
  • -[NSURL resourceSpecifier] = (// से सब कुछ URL के अंत तक)
  • -[NSURL user] = फोबार
  • -[NSURL password] = नट
  • -[NSURL host] = example.com
  • -[NSURL port] = 8080
  • -[NSURL path] = /some/path/file.html
  • -[NSURL pathComponents] = @ ["/", "कुछ", "पथ", "file.html"] (ध्यान दें कि प्रारंभिक / इसका हिस्सा है)
  • -[NSURL lastPathComponent] = file.html
  • -[NSURL pathExtension] = html
  • -[NSURL parameterString] = परम-यहाँ
  • -[NSURL query] = फू = बार
  • -[NSURL fragment] = बाज

हालाँकि आप जो चाहते हैं, वह कुछ इस तरह है:

NSURL* url = [NSURL URLWithString:@"http://digg.com/news/business/24hr"];
NSString* reducedUrl = [NSString stringWithFormat:
    @"%@://%@/%@",
    url.scheme,
    url.host,
    url.pathComponents[1]];

आपके उदाहरण URL के लिए, आप जो चाहते हैं वह प्रोटोकॉल, होस्ट और पहला पथ घटक है। (द्वारा दिए गए सरणी में इंडेक्स 0 पर तत्व -[NSString pathComponents]बस "/" है, इसलिए आप इंडेक्स 1 में तत्व चाहते हैं। अन्य स्लैब को छोड़ दिया जाता है।)


9
इसे पढ़ने वाले किसी के लिए: आपको [url.pathComponents objectAtIndex:1]इंडेक्स के बजाय प्राप्त करने की आवश्यकता है 0, क्योंकि स्लैश वास्तव में एरे के तत्व हैं, जिससे आउटपुट के जवाब में कोड होता हैhttp://digg.com//
Dima

@ दीमा, अच्छी पकड़। हालांकि, केवल पहले स्लैश को एक पथ घटक माना जाता है, दूसरों को छोड़ दिया जाता है। मुझे यकीन नहीं है कि, क्यों।
zneak

अपनी ओर से अच्छी पकड़! मैंने इसे सिर्फ एक के साथ भी नहीं देखा।
दीमा

क्या हम बुलेट बिंदु सूची से फ़ाइल नाम को याद कर रहे हैं? इस उदाहरण file.htmlमें, बुलेट पॉइंट्स में सूचीबद्ध नहीं है - मुझे लगता है कि हम पथ से क्वेरी स्ट्रिंग पर जा रहे हैं ...
Brett

2
digg.com? यह पोस्ट कितनी पुरानी है! ;-)
डेरेन

7

खेल के मैदान का उपयोग, भाषा में तेजी, मुझे यह मिल गया! खेल का मैदान कार्रवाई में इसे देखने का एक इंटरैक्टिव तरीका प्रदान करता है। मैं आशा करता हूं कि आप भी ऐसा ही करने का आनंद ले सकते हैं, आईओएस में एक महत्वपूर्ण विषय NSURL सीखने का एक मजेदार तरीका।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.