2012-06-12 6 views
7

मैं कोशिश की है:एक्सकोड में उपयोगकर्ता डेस्कटॉप के लिए पथ कैसे प्राप्त करते हैं?

path = @"~/Desktop/files/text.plist"; 
NSDictionary *aDict = [NSDictionary dictionaryWithContentsOfFile:path]; 

ResultPath: ~/डेस्कटॉप/फ़ाइलें/text.plist

path = @"$(HOME)/Desktop/files/text.plist"; 
NSDictionary *aDict = [NSDictionary dictionaryWithContentsOfFile:path]; 

ResultPath: $ (गृह) /Desktop/files/text.plist

path = [NSHomeDirectory() stringByAppendingString:@"/Desktop/files/text.plist"]; 
NSDictionary *aDict = [NSDictionary dictionaryWithContentsOfFile:path]; 

परिणाम पाथ:/उपयोगकर्ता/my_name/लाइब्रेरी/एप्लिकेशन समर्थन/आईफोन सिम्युलेटर/5.1/अनुप्रयोग/639 डीसी 66 ए -7092-4ECB-9E48-59935AC1C394/डेस्कटॉप/फ़ाइलें/text.plist

  1. क्या एक्सकोड में उपयोगकर्ता के डेस्कटॉप पथ पर जाने का कोई तरीका है?
  2. क्या उपरोक्त उदाहरण में पर्यावरण चर का उपयोग किया जा सकता है और कैसे?

संपादित करें: मैक कंसोल में वातावरण चर (या मैक्रो) देखते हैं वैसे ही जैसे, ये भी कोड के भीतर इस्तेमाल किया जा सकता: 2nd सवाल पर आगे स्पष्टीकरण? अगर उनका उपयोग किया जा सकता है, तो क्या कोई उदाहरण के साथ मदद कर सकता है? $ HOME_DIRECTORY या उसके जैसा कुछ।

+2

ऐसा लगता है कि आप एक आईओएस एप्लिकेशन लिख रहे हैं। आईओएस में कोई डेस्कटॉप नहीं है, इसलिए मुझे यकीन नहीं है कि आप यहां क्या उम्मीद कर रहे हैं! – duskwuff

+3

मुझे वास्तव में यह नहीं पता कि यह एक्सकोड से कैसे संबंधित है ... –

+1

@duskwuff मैं एक आईओएस ऐप लिख रहा हूं जिसे सिम्युलेटर * रन * में चलाया जाना है (हां, ऐसे-जैसे परीक्षण परीक्षण वातावरण)। इस तरह मुझे मैक पर उपयोगकर्ता के डेस्कटॉप का मार्ग प्राप्त करने की आवश्यकता है। –

उत्तर

21

आप खोज पथ में डेस्कटॉप निर्दिष्ट कर सकते हैं:

NSArray * paths = NSSearchPathForDirectoriesInDomains (NSDesktopDirectory, NSUserDomainMask, YES); 
NSString * desktopPath = [paths objectAtIndex:0]; 

इस तरह से यह कर के लाभ यह है कि यह कैसे के बारे में कोई धारणाएं बनाता है उपयोगकर्ता ने अपने मैक को कॉन्फ़िगर किया है, यदि उसका डेस्कटॉप फ़ोल्डर डिफ़ॉल्ट स्थान पर नहीं है, तो यह अभी भी सही होगा।

+0

बस एफवाईआई के बाद से काम नहीं कर रहा है, ऐप्पल ने कुछ चीजें बदल दी हैं और यह एक ऐसा पथ उत्पन्न करता है जो मौजूद नहीं है और मैक उपयोगकर्ता का डेस्कटॉप नहीं है: '/ उपयोगकर्ता/उपयोगकर्ता नाम/लाइब्रेरी/डेवलपर/कोरसिम्युलेटर/डिवाइस/सी 4 बीई 4 डी04-304 ई -44 ईएफ -8665-बी 2 डीएफ 0 एई 75 ईबीसी/डेटा/कंटेनर/डेटा/एप्लीकेशन/167 ई 72 9 8-ई 774-4 सीएफएफ-बी 252-एफ 61AC60E9027/डेस्कटॉप' – newenglander

+0

@ न्यूनगेंडर ऐसा इसलिए है क्योंकि इसकी कोई वास्तविक अवधारणा नहीं है सैंडबॉक्स फ़ाइल सिस्टम की वजह से आईओएस डिवाइस पर एक 'डेस्कटॉप' फ़ोल्डर। ऐप सिम्युलेटर पर चल रहा है, इसलिए यह डेस्कटॉप के सिम्युलेटर के संस्करण को दिखा रहा है। एक वास्तविक डिवाइस पर एक ही कोड चलाने का प्रयास करें, और फ़ाइल को इस "डेस्कटॉप" फ़ोल्डर में डालने का प्रयास करें। त्रुटि संदेश नोट करें। – Abizern

-2

यह आपके # 1 प्रश्न के लिए यह करना चाहिए:

NSArray* paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES); 
NSString* documentsDirectoryPath = [paths objectAtIndex:0]; 

आप आगे अपने दूसरे प्रश्न की व्याख्या कर सकते हैं? :)

+0

यह उत्तर काम नहीं करता प्रतीत होता है। यह मुझे वही रास्ता देता है जैसा मैंने ऊपर दिया है तीसरा विकल्प। –

+0

मैंने दूसरे भाग को –

+3

दस्तावेज़ फ़ोल्डर expl डेस्कटॉप फ़ोल्डर –

1

यह काम करना चाहिए:

NSString *pathToDesktop = [NSString stringWithFormat:@"/Users/%@/Desktop/text.txt", NSUserName()]; 
+0

एक मिल धन्यवाद धन्यवाद एक संपादन किया। काम करता है। –

+0

यह मानता है कि डेस्कटॉप फ़ोल्डर किसी विशेष स्थान पर स्थित है। उपयोगकर्ता इसे बदल सकता है, और फिर यह टूट जाएगा। – Abizern

+0

@Abizern - आप डेस्कटॉप को दूसरे स्थान पर ले जा सकते हैं, लेकिन यह हमेशा उपयोगकर्ता/your_name/डेस्कटॉप पर स्थित उपनाम होगा, इसलिए यह विधि अभी भी काम करेगी। – pasawaya

1

मैं इस कथन का उपयोग करता हूं, यह मानता है कि डेस्कटॉप फ़ोल्डर सामान्य स्थान पर है।

[NSURL fileURLWithPath:[NSHomeDirectory()stringByAppendingPathComponent:@"Desktop"]; 
संबंधित मुद्दे