2012-08-03 18 views
16

Moja aplikacja Mac jest piaskownica i muszę zapisać plik. Gdzie mogę zapisać ten plik? Nie mogę znaleźć określonego miejsca, w którym jest to dozwolone bez użycia otwartego panelu. Tak to robię na iOS:Gdzie można zapisywać pliki w piaskownicy w aplikacji Mac?

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

Jaki jest odpowiednik dla katalogu piaskownicy na Macu?

Odpowiedz

19

To urywek kodu działa na komputer Mac bez względu na to, czy aplikacja jest piaskowana.

W aplikacji Mac bez komputera z piaskownicą path będzie się odnosić do folderu Dokumenty w domu: np. /Users/username/Documents.

W aplikacji piaskownicy odnosi się do folderu w obszarze izolowanym aplikacji: np. /Users/username/Library/Containers/com.yourcompany.YourApp/Documents

Aby uzyskać szczegółowe informacje, patrz the docs.

8

Przewodnik po piaskownicy firmy Apple jest bardzo przydatny, znalazł here.

Zasadniczo masz folder dedykowany do Twojej aplikacji, opisany przez Amatora Programisty w odpowiedzi na moje pytanie here.

~/Library/kontenerów/com.yourcompany.yourappname/

Oto co mam do tej pory, będę go poprawić później:

//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]; 
} 
Powiązane problemy