transporte - iOS8 No se puede crear una carpeta/archivo en la ubicación del contenedor compartido del grupo de aplicaciones
contratacion de contenedores (2)
Estoy utilizando el siguiente código para crear una carpeta / archivo en la ruta del contenedor compartido. Lo que ayudará tanto a la extensión de la aplicación como a la extensión que contiene la aplicación puede acceder a los datos.
Código para obtener la ubicación de la URL del contenedor compartido:
+(NSURL*)getSharedContainerURLPath
{
NSFileManager *fm = [NSFileManager defaultManager];
NSString *appGroupName = APP_EXTENSION_GROUP_NAME; /* For example */
NSURL *groupContainerURL = [fm containerURLForSecurityApplicationGroupIdentifier:appGroupName];
return groupContainerURL;
}
código para crear un directorio
+(void)createDirAtSharedContainerPath
{
NSString *sharedContainerPathLocation = [[self getSharedContainerURLPath] absoluteString];
NSString *directoryToCreate = @"user_abc";
//basically this is <shared_container_file_path>/user_abc
NSString *dirPath = [sharedContainerPathLocation stringByAppendingPathComponent:directoryToCreate];
BOOL isdir;
NSError *error = nil;
NSFileManager *mgr = [[NSFileManager alloc]init];
if (![mgr fileExistsAtPath:dirPath isDirectory:&isdir]) { //create a dir only that does not exists
if (![mgr createDirectoryAtPath:dirPath withIntermediateDirectories:YES attributes:nil error:&error]) {
NSLog(@"error while creating dir: %@", error.localizedDescription);
} else {
NSLog(@"dir was created....");
}
}
}
el código anterior no genera ningún error, dice éxito, pero no puedo encontrar la carpeta en la ruta del contenedor compartido. Cualquier idea que pueda ser apreciada.
Acabo de hacer que mi código funcione cambiando el siguiente código
NSString *sharedContainerPathLocation = [[self getSharedContainerURLPath] absoluteString];
a
NSString *sharedContainerPathLocation = [[self getSharedContainerURLPath] path];
Para Swift
func createProjectDirectoryPath(path:String) -> String
{
let containerURL = NSFileManager.defaultManager().containerURLForSecurityApplicationGroupIdentifier("group.abc")
let logsPath = containerURL!.URLByAppendingPathComponent(path)
//print(logsPath.path);
do {
try NSFileManager.defaultManager().createDirectoryAtPath(logsPath.path!, withIntermediateDirectories: true, attributes: nil)
} catch let error as NSError {
NSLog("Unable to create directory /(error.debugDescription)")
}
return logsPath.path!
}
Usar
var strSavePath : String = self.createProjectDirectoryPath("Large")
Nota: Después de configurar su grupo de aplicaciones, este código anterior es útil para crear una carpeta.