2010-09-28 13 views
9

में एक यूआरएल है, मैं आईफोन विकास और उद्देश्य-सी में नया हूं। जेडबार एसडीके का उपयोग करके मैंने एक मूल ऐप विकसित किया है जो फोटो एलबम से एक क्यूआर छवि स्कैन करता है और इसका अनुवाद करता है जो इसका अनुवाद करता है।यह निर्धारित करने के लिए कि क्या कोई स्ट्रिंग उद्देश्य-सी

मैं जानना चाहता हूं कि इस आउटपुट को लेने का कोई तरीका है या नहीं, यह निर्धारित करें कि यह एक यूआरएल है और यदि इसे किसी वेब ब्राउज़र में खोलना है।

धन्यवाद Zac

उत्तर

22

NSURL के URLWithString रिटर्न शून्य यदि URL पारित कर दिया मान्य नहीं है। इसलिए, आप यह निर्धारित करने के लिए केवल वापसी मान जांच सकते हैं कि यूआरएल मान्य है या नहीं।

अद्यतन

बस URLWithString: का उपयोग कर आमतौर पर पर्याप्त नहीं होगा, तो आप शायद यह भी पूछेंगे कि यूआरएल एक स्कीम तथा होस्ट की जांच करने अन्यथा, इस तरह के रूप में al:/dsfhkgdsk यूआरएल परीक्षण पारित करेंगे चाहते हैं।

तो आप शायद कुछ इस तरह करना चाहते हैं:

NSURL *url = [NSURL URLWithString:yourUrlString]; 
if (url && url.scheme && url.host) 
{ 
    //the url looks ok, do something with it 
    NSLog(@"%@ is a valid URL", yourUrlString); 
} 

आप [url.scheme isEqualToString:@"http"] जोड़ना चाहते हैं तो आप केवल http URL स्वीकार करना चाहते हैं।

+0

मुझे सही दिशा में इशारा करते हुए के लिए धन्यवाद :) समझे यह अब हल कर, उद्देश्य सी हालांकि साथ एक बहुत अधिक अभ्यास की जरूरत है! हाहा –

+3

ऐसा लगता है कि एक वैध यूआरएल क्या है एक ढीली परिभाषा है। "foo.com" पार्स होगा ताकि आप शायद यह जांचना चाहें कि परिणामस्वरूप ऑब्जेक्ट में एक स्कीम प्रॉपर्टी है। – drewish

+3

आप केवल URLWithString पर भरोसा नहीं कर सकते हैं, क्योंकि NSURL * url = [NSURL URLWithString: @ "a"]; आप के पास वापस आ जाएगा। http://stackoverflow.com/questions/1471201/how-to-validate-an-url-on-the-iphone –

2

यहां एक वैकल्पिक समाधान है जिसे मैं पार कर गया। आप ऐसा कर सकते हैं।

NSURLRequest *req = [NSURLRequest requestWithURL:[NSURL URLWithString:@"yourstring"]]; 
bool valid = [NSURLConnection canHandleRequest:req]; 

स्रोत: https://stackoverflow.com/a/13650542/2513947

संबंधित मुद्दे