2014-11-18 17 views
7

में प्रत्येक लॉन्च पर दस्तावेज़ या कैश पथ परिवर्तन क्योंकि मैं अपने ऐप में एक वीडियो डाउनलोड कर रहा हूं और इसे स्थानीय कैश/दस्तावेज़ पथ में रख रहा हूं और जब आवश्यक हो तो दिखा रहा हूं। यह आईओएस 7 में काम कर रहा है लेकिन एवीप्लेयर आईओएस 8 और उसके बाद में वीडियो नहीं दिखा रहा है। जैसा कि मैंने पढ़ा है कि आईओएस 8 में प्रत्येक लॉन्च पर दस्तावेज़/कैश पथ बदल दिया गया है। मुद्दा यह है कि, मुझे एक बार वीडियो डाउनलोड करना होगा और इसे अपने ऐप में कई बार दिखाना होगा। तो ऐप में वीडियो दिखाने के लिए मैं बार-बार उसी मार्ग तक कैसे पहुंच सकता हूं।आईओएस 8

Here is my code: 

NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES); 
// NSLog(@"Document folder: %@", paths); 
NSString *documentsDirectory = [paths objectAtIndex:0]; 
    NSLog(@"Document folder: %@", documentsDirectory); 

लॉग में मुझे प्रत्येक लॉन्च पर अलग-अलग पथ मिल रहा है। किसी भी सहायता की सराहना की जाएगी। धन्यवाद

+0

आप एप्लिकेशन की दस्तावेज़ निर्देशिका तक पहुंच रहे हैं, कैश निर्देशिका नहीं। कैश के लिए – quellish

+0

भी पथ बदल रहा है। लॉन्च पर एप्लिकेशन फ़ोल्डर हर बार बदलते समय पथ में गुप्त संख्या। –

+0

यदि मैं एनएससीएच डायरेक्टरी का उपयोग करता हूं, तो मुझे लॉग में मिल रहा है। यहां गुप्त संख्याएं भी बदल रही हैं।/उपयोगकर्ता/मंथव्य/लाइब्रेरी/डेवलपर/कोरसिम्युलेटर/डिवाइस/76 ए 9 बी 0 9 सी -434 ई -4 सी 2 9-879 डी-119556 ए 10 एए 9/डेटा/कंटेनर/डेटा/एप्लीकेशन/34093128-बी 643-4030-बी 36 ए-350 बी 3110 सी 12 सी/लाइब्रेरी/कैश –

उत्तर

10

मुझे जवाब मिला। चूंकि प्रत्येक लॉन्च पर पूर्ण पथ बदल रहा है, इसलिए हम डेटा को सापेक्ष पथ पर सहेज सकते हैं और इसे पूर्ण पथ और सापेक्ष पथ को जोड़ने पर पुनर्प्राप्त कर सकते हैं।

NSString *documentsDirectory = @"MyFolder"; 
documentsDirectory = [documentsDirectory stringByAppendingPathComponent:filename]; 
NSString *relativePath = documentsDirectory; 

लेकिन जब आप फ़ाइल को पढ़ने आप निरपेक्ष पथ + रिश्तेदार पथ का उपयोग करने के लिए है: भी

NSFileManager *fileManager = [NSFileManager defaultManager]; 
    NSString *fullCachePath = ((NSURL*)[[fileManager URLsForDirectory:NSDocumentDirectory inDomains:NSUserDomainMask] lastObject]).path; 
    NSString *fullPath = [fullCachePath stringByAppendingPathComponent:relativePath]; 

डाटाबेस के लिए

यह हम रिश्तेदार पथ पर डेटा को बचा सकता है कैसे है डेटा को केवल सापेक्ष पथ पर स्टोर करें। लेकिन पढ़ने के दौरान पूर्ण पथ लेते हैं और डेटाबेस से आने वाले सापेक्ष पथ को जोड़ते हैं और पढ़ते हैं।
यहां काम करना।

+0

जब आप फ़ाइल को सहेजते हैं तो आपको एक पूर्ण पथ निर्दिष्ट करने की आवश्यकता नहीं है, ताकि आप जान सकें कि यह कहां जा रहा है? ऐसा लगता है कि पढ़ने और लिखते समय, दोनों बार पूर्ण पथ उत्पन्न करना सबसे अच्छा अभ्यास होगा। यही मेरे लिए काम कर रहा है। – stone

+0

जब मैं सापेक्ष पथ में सहेजने की कोशिश कर रहा हूं तो यह डेटा को सहेज नहीं रहा है। यह असफल रहा है। क्या आप कृपया दस्तावेज़ निर्देशिका को सहेजने के लिए मार्गदर्शन कर सकते हैं। – Babul

+0

आप उपरोक्त 2 विधियों की तरह ही स्टोर कर सकते हैं। "फ़ोल्डर नाम" में सापेक्ष पथ और बाकी के रूप में आराम करें। इसके अलावा अगले भाग को कॉपी करें। –

5

एप्लिकेशन कंटेनर या सैंडबॉक्स बदलने का मार्ग एक अपेक्षित स्थिति होना चाहिए। आपको पूर्ण फ़ाइल सिस्टम पथ को सैंडबॉक्स निर्देशिका में संग्रहीत नहीं करना चाहिए; इसके बजाय उस निर्देशिका में संबंधित पथ को संग्रहीत करें, और प्रत्येक बार NSSearchPathForDirectoriesInDomains के परिणामस्वरूप संलग्न करें।

+0

क्या आप मुझे कुछ सुझाव दे सकते हैं लिंक। –

+0

मुझे स्थानीय डिवाइस या सिम्युलेटर पर कुछ वीडियो फ़ाइलों को स्टोर करना होगा। –