首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >iOS8无法在应用组共享容器位置下创建文件夹/文件

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

Stack Overflow用户
提问于 2014-09-10 17:09:21
回答 2查看 6.9K关注 0票数 18

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

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

代码语言:javascript
复制
+(NSURL*)getSharedContainerURLPath
{
    NSFileManager *fm = [NSFileManager defaultManager];

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

    NSURL *groupContainerURL = [fm containerURLForSecurityApplicationGroupIdentifier:appGroupName];

    return groupContainerURL;
}

创建目录的代码

代码语言:javascript
复制
+(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....");
        }
    }
}

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

EN

回答 2

Stack Overflow用户

发布于 2014-09-11 16:06:53

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

代码语言:javascript
复制
NSString *sharedContainerPathLocation = [[self getSharedContainerURLPath] absoluteString];

代码语言:javascript
复制
NSString *sharedContainerPathLocation = [[self getSharedContainerURLPath] path];    
票数 34
EN

Stack Overflow用户

发布于 2019-11-14 14:40:52

@Hardik Thakkar Swift 5代码此函数在共享应用组容器中创建目录并返回路径。

代码语言:javascript
复制
func createProjectDirectoryPath(path:String) -> String
{
    let containerURL = FileManager.default.containerURL(forSecurityApplicationGroupIdentifier: Constants.Notifications.appGroupIdentifier)
    let logsPath = containerURL!.appendingPathComponent(path)
    //print(logsPath.path);

    do {
        try FileManager.default.createDirectory(atPath: logsPath.path, withIntermediateDirectories: true, attributes: nil)
    } catch let error as NSError {
        print("Unable to create directory \(error.debugDescription)")
    }
    return logsPath.path
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/25761499

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档