objective c - sierra - ¿Dónde puede una aplicación de Mac en un espacio aislado guardar archivos?
mi mac esta muy lento 2018 (2)
Ese fragmento de código funciona en Mac, independientemente de si su aplicación está en un espacio aislado.
En una aplicación Mac sin espacio aislado, la path
se referirá a la carpeta Documentos en su casa: por ejemplo, /Users/username/Documents
.
En una aplicación de espacio aislado, se refiere a una carpeta dentro del área de /Users/username/Library/Containers/com.yourcompany.YourApp/Documents
: por ejemplo, /Users/username/Library/Containers/com.yourcompany.YourApp/Documents
Vea los documentos para más detalles.
La aplicación de mi Mac está en espacio aislado y necesito guardar un archivo. ¿Dónde guardo este archivo? Parece que no puedo encontrar el lugar específico donde se permite esto sin usar un panel abierto. Así es como lo hago en iOS:
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *path = [paths objectAtIndex:0];
¿Cuál es el equivalente para el directorio sandboxed en Mac?
La guía de sandbox de Apple es muy útil, se encuentra here .
Básicamente, tiene una carpeta dedicada para su aplicación, tal como lo describe el AmateurProgrammer en respuesta a mi pregunta here .
~ / Library / Container / com.yourcompany.yourappname /
Aquí está lo que tengo hasta ahora, lo mejoraré más adelante:
//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];
}