2012-08-30 23 views
26

मान लीजिए कि मेरे पास मुख्य ऐप बंडल में शामिल फ़ाइलों का मनमाना सेट है। मैं उन लोगों के लिए फ़ाइल यूआरएल लॉन्च करना चाहता हूं जो उन्हें लॉन्च करते हैं और उन्हें कहीं स्टोर करते हैं। क्या यह NSFileManager का उपयोग कर संभव है? दस्तावेज उस संबंध में अस्पष्ट है।ऐप लॉन्च पर बंडल फ़ाइल संदर्भ/पथ प्राप्त करना

नोट: मुझे केवल फाइल यूआरएल की जरूरत है, मुझे वास्तविक फाइलों तक पहुंचने की आवश्यकता नहीं है।

+0

"फ़ाइल संदर्भ" क्या है? पथ? यूआरएल? क्या? –

+0

फ़ाइल संदर्भ से मेरा मतलब है कि फ़ाइल यूआरएल –

उत्तर

59

NSString *path = [[NSBundle mainBundle] pathForResource:@"SomeFile" ofType:@"jpeg"]; 
NSURL *url = [NSURL fileURLWithPath:path]; 

आप कर सकते हैं इस URL लिखने के लिए, उदाहरण के लिए, दस्तावेज़ निर्देशिका में एक संपत्ति सूची फ़ाइल:

NSString *docsDir = [NSSearchForDirectoriesInDomains(NSDocumentsDirectory, NSUserDomainMask, YES) objectAtIndex:0]; 
NSString *plistPath = [docsDir stringByAppendingPathComponent:@"Files.plist"]; 
NSDictionary *dict = [NSDictionary dictionaryWithObjectsAndKeys:[url absoluteString] forKey:@"SomeFile.jpeg"]; 
[dict writeToFile:plistPath atomically:YES]; 

आप फ़ाइलों के नाम पता नहीं है और आप बस बंडल में सभी फाइलों को सूचीबद्ध करना चाहते हैं,

का उपयोग
NSArray *files = [[NSFileManager defaultManager] contentsOfDirectoryAtPath:[[NSBundle mainBundle] bundlePath] error:NULL]; 
for (NSString *fileName in files) { 
    NSString *path = [[NSBundle mainBundle] pathForResource:fileName ofType:nil]; 
    NSURL *url = [NSURL fileURLWithPath:path]; 
    // do something with `url` 
} 
+0

क्या होगा यदि मुझे फ़ाइलों के नाम नहीं पता हैं, तो मैं बस वहां सभी फाइलें प्राप्त करना चाहता हूं? –

+0

@AndrewLauerBarinov तो आप NSFileManager के दस्तावेज़ पढ़ सकते हैं। (लेकिन संपादन देखें, वैसे भी ...) –

+0

अतिरिक्त जानकारी के लिए धन्यवाद! –

2

हाँ, आप मिलेगा उनके रास्ते:

NSString *path = [NSBundle mainBundle] pathForResource:@"file1" ofType:@"png"]; 
NSURL *fileURL = [NSURL fileURLWithPath:path] 

// save it as any other object or in a dictionary: 

[myMutableDictionary setObject:fileURL forKey:@"file1.png"]; 

संपादित करें:, फ़ाइलों की पूरी सूची पाने के लिए NSFileManager का उपयोग करें, बंडल ही करने के लिए पथ मिलता है, तो फ़ाइलें प्राप्त करने के लिए प्रत्येक निर्देशिका चलना, बनाने यूआरएल, और उन्हें कहीं सेव। एसओ पर कोड के ओडल्स हैं, ऐसा करने के लिए निर्देशिका कैसे चलें। [आप आप क्या चाहते हैं के बारे में अधिक विशिष्ट होना अपने प्रश्न अद्यतन करना चाहिए, यह सब मूल रूप से स्पष्ट नहीं किया गया था] आप का उपयोग कर मुख्य बंडल में एक फ़ाइल का URL प्राप्त कर सकते हैं

+1

क्या होगा यदि मुझे फाइलों के नाम नहीं पता हैं, तो मैं बस वहां सभी फाइलें प्राप्त करना चाहता हूं? –

0

वहाँ NSBundle (documentation) 10.6 या आईओएस 4 पर उपलब्ध पर एक API बल्कि NSURL निर्माता के लिए एक रास्ता गुजर से सीधे एक NSURL प्राप्त करने के लिए, है:

- (NSURL *)URLForResource:(NSString *)name withExtension:(NSString *)ext; 

यह भी वेरिएंट कि ले एक subdirectory और localizationName, इसके -pathForResource: समकक्षों के समान।