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

问题描述:

我正在使用以下代码在共享的 容器路径下创建文件夹/文件。这将有助于应用扩展程序和包含应用程序的扩展程序访问数据。iOS8无法在应用程序组共享容器位置下创建文件夹/文件

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

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

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

    NSURL *groupContainerURL = [fm containerURLForSecurityApplicationGroupIdentifier:appGroupName]; 

    return groupContainerURL; 
} 

代码来创建一个目录

+(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...."); 
     } 
    } 
} 

上面的代码不加它说,任何错误的成功,但我无法找到共享容器路径下的文件夹。可能意识到

任何想法,我只是做了我的代码工作中,把以下代码

NSString *sharedContainerPathLocation = [[self getSharedContainerURLPath] absoluteString]; 

NSString *sharedContainerPathLocation = [[self getSharedContainerURLPath] path];  
+1

一旦您设置了App Group,如下面的链接所示。 http://blog.parse.com/announcements/introducing-local-data-sharing-for-apple-watch-and-app-extensions/ – Thiru 2015-05-14 10:56:52

+0

请将问题标记为已接受,以便大家都知道这是解决方案@loganathan – 2017-01-02 14:57:15

+0

它为我工作。 Thanx – SPatel 2017-05-11 12:53:14

对于斯威夫特

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! 
    } 

要使用

var strSavePath : String = self.createProjectDirectoryPath("Large") 

注意:在您的应用程序组设置这上面的代码是非常有用的创建文件夹。