18

次のコードを使用して、共有コンテナー パスの下にフォルダー/ファイルを作成しています。これは、アプリの拡張機能とアプリを含む拡張機能の両方がデータにアクセスできるようにするのに役立ちます。

共有コンテナーの 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....");
        }
    }
}

上記のコードはエラーを発生させず、成功と表示されますが、共有コンテナー パスの下にフォルダーが見つかりません。評価される可能性のあるアイデア

4

3 に答える 3

35

次のコードを変更して、コードを機能させました

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

NSString *sharedContainerPathLocation = [[self getSharedContainerURLPath] path];    
于 2014-09-11T08:06:52.550 に答える