2012-07-18 10 views
11

अगर मैं अपने सैंडबॉक्स के अनुप्रयोग समर्थन का उपयोग कर NSFileManager:URLForDirectory तो मैं निम्न URL वापस पाने निर्देशिका लाने:NSFileManager: enumeratorAtURL: NSFileManager के लिए URL का एक अलग रूप रिटर्न: URLForDirectory

file://localhost/var/mobile/Applications/EA80DE91-394C-4EAB-B269-1081C859BB0F/Library/Application%20Support/ 

अगर मैं NSFileManager:enumeratorAtURL का उपयोग खोज करने के लिए हालांकि निर्देशिका मैं प्रपत्र के URL वापस पाने:

file://localhost/private/var/mobile/Applications/EA80DE91-394C-4EAB-B269-1081C859BB0F/Library/Application%20Support/ 

यह मैं हूँ कारण समस्याएं हो रही है क्योंकि मैं यूआरएल खोज कर रहा हूँ/जोड़तोड़ की जगह और अंतर एक बेमेल कारण बनता है। मैंने पहले कहीं और इस तरह के अंतर में भाग लिया है और मेरा समाधान तब कच्चे यूआरएल के बजाय यूआरएल के पथ (NSURL:path का उपयोग करके) का उपयोग करना था, हालांकि इस स्थिति में काम नहीं किए जाने वाले पथ इस प्रकार काम नहीं करेंगे:

/var/mobile/Applications/EA80DE91-394C-4EAB-B269-1081C859BB0F/Library/Application Support 
/private/var/mobile/Applications/EA80DE91-394C-4EAB-B269-1081C859BB0F/Library/Application Support/ 

मैं जो करने की कोशिश कर रहा हूं वह यह है: मेरे पास एक ही नाम के साथ मेरी एप्लिकेशन समर्थन निर्देशिका में कई फाइलें हो सकती हैं लेकिन विभिन्न स्थानों पर, और मुझे एप्लिकेशन समर्थन निर्देशिका से संबंधित पथ निकालने की आवश्यकता है। यानी अगर मैं निम्नलिखित है

/Application Support/abc/file.dat 
/ApplicationSupport/abc/def/file.dat 

मैं "abc" और "abc/def" निकालने में सक्षम होना चाहता हूँ।

NSArray *keys = [NSArray arrayWithObject:NSURLIsRegularFileKey]; 
NSDirectoryEnumerator *dirEnumerator = [self.fileManager enumeratorAtURL:[MyManager appSupportDirectory] 
              includingPropertiesForKeys:keys 
                  options:NSDirectoryEnumerationSkipsHiddenFiles 
                 errorHandler:nil]; 
    for (NSURL *url in dirEnumerator) 
    { 
     if (NSOrderedSame == [[url lastPathComponent] caseInsensitiveCompare:kFilename]) 
     { 
      NSString *appSupportPath = [[MyManager appSupportDirectory] path]; 
      NSString *pathToFile = [url path]; 
      pathToFile = [pathToFile URLByDeletingLastPathComponent]; 
      NSString *subPath = [pathToFile stringByReplacingOccurrencesOfString:appSupportPath withString:@""]; 

(MyManager: appSupportDirectory कॉल NSFileManager: URLForDirectory: NSApplicationSupportDirectory उपयोग करते हुए) मैं निम्नलिखित कोड का उपयोग कर इस कर रहा था

इस सिम्युलेटर जहां enumeratorAtURL: और URLFOrDirectory: वापसी समान पथ, लेकिन कारण पर ठीक काम करता है उनके हार्डवेयर पर मतभेद यह विफल रहता है।

क्या समान पथ लौटने के लिए enumeratorAtURL: और URLForDirectory: प्राप्त करने का कोई तरीका है, या यदि मैं वर्तमान में क्या कर रहा हूं, तो सबपैथ निकालने का एक वैकल्पिक सुरुचिपूर्ण तरीका नहीं है?

उत्तर

3

मैं बजाय ऐसा करने के लिए स्विच करना पड़ा:

NSDirectoryEnumerator *dirEnum = [self.fileManager enumeratorAtPath: [NSHomeDirectory() stringByAppendingPathComponent:@"/Library/Application Support/"]]; 
+0

मुझे एक ही समस्या थी। फ़ाइल प्रबंधक की सामग्री OfDirectoryAtURL/URL/के साथ एक यूआरएल देता है। और मुझे डेटाबेस में अपने यूआरएल रिकॉर्ड की तुलना में परेशानी थी। – John

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