Ответ 1
Я только что сделал свой код, изменив следующий код
NSString *sharedContainerPathLocation = [[self getSharedContainerURLPath] absoluteString];
to
NSString *sharedContainerPathLocation = [[self getSharedContainerURLPath] path];
Я использую следующий код для создания папки/файла под общим контейнерный путь. Это поможет как расширению приложения, так и расширению, содержащему приложение, получить доступ к данным.
чтобы получить общее расположение 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];
to
NSString *sharedContainerPathLocation = [[self getSharedContainerURLPath] path];
Для 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!
}
Использовать
var strSavePath : String = self.createProjectDirectoryPath("Large")
Примечание. После того, как ваша группа приложений настроена, этот выше код полезен для создания папки.