2012-08-03 12 views
16

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

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

मैक पर sandboxed निर्देशिका के बराबर क्या है?

उत्तर

19

कोड स्निपेट पर काम करता है मैक इस पर ध्यान दिए बिना कि आपका एप्लिकेशन सैंडबॉक्स है या नहीं।

गैर-सैंडबॉक्स वाले मैक ऐप में, path आपके घर में दस्तावेज़ फ़ोल्डर का संदर्भ देगा: उदा। /Users/username/Documents

एक सैंडबॉक्स किए गए ऐप में, यह ऐप सैंडबॉक्स के भीतर एक फ़ोल्डर को संदर्भित करता है: उदा। /Users/username/Library/Containers/com.yourcompany.YourApp/Documents

विवरण के लिए the docs देखें।

8

ऐप्पल की सैंडबॉक्सिंग मार्गदर्शिका बहुत उपयोगी है, here मिली।

आपके मूल रूप से आपके प्रश्न के लिए समर्पित फ़ोल्डर है, जैसा कि मेरे प्रश्न here के जवाब में एमेटरप्रोग्रामर द्वारा वर्णित है।

~/Library/कंटेनर/com.yourcompany.yourappname/

यहाँ है क्या मैं अब तक है, मैं इसे बाद में सुधार होगा:

//Create App directory if not exists: 
NSFileManager* fileManager = [[NSFileManager alloc] init]; 
NSString* bundleID = [[NSBundle mainBundle] bundleIdentifier]; 
NSArray* urlPaths = [fileManager URLsForDirectory:NSApplicationSupportDirectory 
             inDomains:NSUserDomainMask]; 

NSURL* appDirectory = [[urlPaths objectAtIndex:0] URLByAppendingPathComponent:bundleID isDirectory:YES]; 

//TODO: handle the error 
if (![fileManager fileExistsAtPath:[appDirectory path]]) { 
    [fileManager createDirectoryAtURL:appDirectory withIntermediateDirectories:NO attributes:nil error:nil]; 
} 
संबंधित मुद्दे