2010-06-14 12 views
17

मैं अपने आईफोन ऐप से Google मानचित्र की अगली जियोकोडिंग सेवा तक पहुंचने का प्रयास कर रहा हूं। जब मैं इसमें एक पाइप के साथ स्ट्रिंग से NSRL बनाने का प्रयास करता हूं तो मुझे बस एक शून्य पॉइंटर मिलता है।एनएसआरएल कैसे बनाएं जिसमें एक | (पाइप चरित्र)?

NSURL *searchURL = [NSURL URLWithString:@"http://maps.google.com/maps/api/geocode/json?address=6th+and+pine&bounds=37.331689,-122.030731|37.331689,-122.030731&sensor=false"]; 

मुझे Google एपीआई में किसी अन्य तरीके से एक पाइप के साथ सीमा निर्देशांक भेजने के लिए कोई अन्य तरीका नहीं दिखता है। इस बारे में कोई विचार है कि मैं यह कैसे कर सकता हूं?

उत्तर

29

क्या आपने पाइप को %7C (char | के लिए URL एन्कोडेड मान) के साथ बदलने की कोशिश की है?

+1

हाँ कि काम किया। हे धन्यवाद, मैं एक पूर्ण यूआरएल नोब हूं। – aks

+4

क्या एनएसएसटींग में कोई नहीं है - stringByAddingPercentEscapesUsingEncoding: विधि जो आपके लिए करता है? –

+0

दोह। यही वही है जो मुझे चाहिए, बस% 20 के अलावा प्रतिशत भागने के बारे में पता नहीं था। धन्यवाद दोस्तों – aks

9

आप जो कुछ भी अजीब वर्ण आप भविष्य में डाल दिया, स्ट्रिंग "यूआरएल के अनुकूल" बनाने के लिए stringByAddingPercentEscapesUsingEncoding विधि का उपयोग करेगा के लिए सुरक्षित करना चाहते हैं ...

NSString *rawUrlStr = @"http://maps.google.com/maps/api/geocode/json?address=6th+and+pine&bounds=37.331689,-122.030731|37.331689,-122.030731&sensor=false"; 
NSString *urlStr = [rawUrlStr stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding]; 
NSURL *searchURL = [NSURL URLWithString:urlStr]; 
13

stringByAddingPercentEscapesUsingEncoding के रूप में हटा दिया गया है, तो आप चाहिए stringByAddingPercentEncodingWithAllowedCharacters का उपयोग करें।

स्विफ्ट जवाब:

let rawUrlStr = "http://maps.google.com/maps/api/geocode/json?address=6th+and+pine&bounds=37.331689,-122.030731|37.331689,-122.030731&sensor=false"; 
let urlEncoded = rawUrlStr.stringByAddingPercentEncodingWithAllowedCharacters(NSCharacterSet.URLQueryAllowedCharacterSet()) 
let url = NSURL(string: urlEncoded) 

संपादित करें: स्विफ्ट 3 जवाब:

let rawUrlStr = "http://maps.google.com/maps/api/geocode/json?address=6th+and+pine&bounds=37.331689,-122.030731|37.331689,-122.030731&sensor=false"; 
if let urlEncoded = rawUrlStr.addingPercentEncoding(withAllowedCharacters: .urlQueryAllowed) { 
    let url = NSURL(string: urlEncoded) 
} 
संबंधित मुद्दे