एक NSSSL को NSString में बदलें


336

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

अब अंतर्निहित एप्लिकेशन छवियों के मामले में मुझे NSStringएक सेव के रूप में फ़ाइल का नाम मिलता है [occasion imagePath]। लेकिन 2 के मामले में, जहां उपयोगकर्ता एक चित्र बनाता है फोटो लाइब्रेरी मुझे NSURLजो मुझे मिलती है जिसे मैं NSStringइसे में सहेजने में सक्षम होने के लिए कन्वर्ट करना चाहता हूं [occasion imagePath]।

यह परिवर्तित करने के लिए संभव है NSURLएक करने के लिए NSString?

जवाबों:


682

उद्देश्य-सी में:

NSString *myString = myURL.absoluteString;

स्विफ्ट में:

var myString = myURL.absoluteString

डॉक्स में अधिक जानकारी :


132

यदि आप शुद्ध स्ट्रिंग में रुचि रखते हैं:

[myUrl absoluteString];

यदि आप URL द्वारा दर्शाए गए पथ में रुचि रखते हैं (और NSFileManagerउदाहरण के लिए विधियों के साथ उपयोग किया जा सकता है ):

[myUrl path];

नमस्ते, आपके उत्तर के लिए धन्यवाद जैसा कि मैंने सहेजे गए स्ट्रेचिंग से छवि को लोड करने की कोशिश कर रहा हूं, मुझे वास्तव में इस बात में दिलचस्पी है कि आपने NSFileManager का उपयोग करने के बारे में क्या उल्लेख किया है [myUril path];जब मैंने निरपेक्षता के बजाय पथ का उपयोग किया था, इससे मुझे यह नाम asset.jpgमिला कि आप इसे कैसे उपयोग करें छवि को UIImage उदाहरण में लोड करें?
अली

नमस्ते। निश्चित रूप से फ़ाइल नाम से एक वास्तविक फ़ाइल सिस्टम पथ प्राप्त करने के लिए आपको यह जानना होगा कि फ़ाइल कहाँ संग्रहीत है और फिर NSString के stringByAppendingPathComponent का उपयोग करके उन्हें बनाकर पूर्ण पथ (निर्देशिका + फ़ाइल नाम) बनाएं: इस नियम का एकमात्र अपवाद तब है जब आप हैं। पता है कि छवि ऐप बंडल में संग्रहीत है, इस मामले में आप बस [UIImage imageNamed: "name"] कॉल का उपयोग कर सकते हैं जो आपके लिए पूर्ण कार्य करता है। लेकिन अन्य मामलों में आपको अपना पूरा रास्ता बताना होगा।
viggio24

नमस्ते, आपके जवाब के लिए फिर से धन्यवाद। मैं अभी भी इस NSString का उपयोग करके UIImage में छवि को लोड करने के तरीके पर उलझन में हूं, assets-library://asset/asset.JPG?id=1000000001&ext=JPGजिसे मैंने इसे NSString में परिवर्तित करने के [myUrl absoluteString]बाद परिणाम को परिवर्तित करके सहेजा है । यहाँ मैंने इस संबंध में यह प्रश्न किया, लेकिन कोई उत्तर नहीं मिला। अगर आप इसका जवाब दे सकते हैं तो मैं इसकी सराहना करता हूँ [ stackoverflow.com/questions/8085267/…
अली

2
हां, हमें myUrl.absoluteString के बजाय myUrl.path का उपयोग करना चाहिए जब आप इसे NSFileManager के साथ उपयोग करना चाहते हैं, धन्यवाद Viggo24 !!
फ्लाईपिग

चूँकि आपके पास एक assets-libraryURL है, एक के बजाय file, यह असंगत है NSFileManager। इस तरह के URL तक पहुँच को सख्ती से नियंत्रित किया जाता है ALAssetsLibrary
माइक अब्दुल्ला

46

स्विफ्ट में यह कोशिश करें:

var urlString = myUrl.absoluteString

उद्देश्य सी:

NSString *urlString = [myURL absoluteString];

मैंने NSString * urlString = [myURL निरपेक्ष स्ट्रिंग] का उपयोग किया; लेकिन मैं इस त्रुटि से मिला था और एक्सकोड दुर्घटनाग्रस्त हो गया था। - [__ NSCFString निरपेक्ष स्ट्रिंग]: गैर-मान्यताप्राप्त चयनकर्ता को 0x791a18e0 पर भेजा गया
माई

@ V @MaiTrinh का मतलब है कि आपकी myURLNSString क्लास की एक वस्तु है। चूंकि NSString में absoluteStringविधि नहीं है तो यह दुर्घटना की ओर जाता है।
बेरिलियम

17

स्विफ्ट अपडेट:

var myUrlStr : String = myUrl.absoluteString

10
आप Stringस्विफ्ट के प्रकार का उपयोग करने के बाद से चूक सकते हैं ।
सलावत खानोव

आपको वास्तव में छोड़ना चाहिएString - स्विफ्ट डिज़ाइन दिशानिर्देश यथासंभव कम अनावश्यक कोड प्राप्त करने का प्रयास करते हैं।
वापसी सच

1

मैंने बस इसी चीज से लड़ाई की और यह अपडेट काम नहीं किया।

यह अंततः स्विफ्ट में किया:

let myUrlStr : String = myUrl!.relativePath!

1

आप किसी भी एक तरीके का उपयोग कर सकते हैं

NSString *string=[NSString stringWithFormat:@"%@",url1];

या

NSString *str=[url1 absoluteString];

NSLog(@"string :: %@",string);

string :: file: ///var/containers/Bundle/Application/E2D7570B-D5A6-45A0-8EAAA1F7476071FE/RemoDuplicateMedia.app/loading_circle_animation.gif

NSLog(@"str :: %@", str);

str :: file: ///var/containers/Bundle/Application/E2D7570B-D5A6-45A0-8EAA-A1F7476071FE/RemoDuplicate.edia.app/loading_circle_animation.gif


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