iOS8无法在应用程序组共享容器位置下创建文件夹/文件

log*_*han 17 ios ios8 ios-app-extension ios-app-group

我使用以下代码在共享容器路径下创建文件夹/文件.这将有助于应用扩展程序和包含应用程序的扩展程序可以访问数据.

获取共享容器url位置的代码:

+(NSURL*)getSharedContainerURLPath
{
    NSFileManager *fm = [NSFileManager defaultManager];

    NSString *appGroupName = APP_EXTENSION_GROUP_NAME; /* For example */

    NSURL *groupContainerURL = [fm containerURLForSecurityApplicationGroupIdentifier:appGroupName];

    return groupContainerURL;
}
Run Code Online (Sandbox Code Playgroud)

用于创建目录的代码

+(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....");
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

上面的代码没有引发任何错误,它说成功,但我无法在共享容器路径下找到该文件夹​​.任何可能被欣赏的想法

log*_*han 31

我只是通过更改以下代码使我的代码工作

NSString *sharedContainerPathLocation = [[self getSharedContainerURLPath] absoluteString];
Run Code Online (Sandbox Code Playgroud)

NSString *sharedContainerPathLocation = [[self getSharedContainerURLPath] path];    
Run Code Online (Sandbox Code Playgroud)