Скопируйте файл TPK из контейнера AppGroup в документы

У меня есть файл, который существует в Shared Container AppGroup, и мне было интересно, можно ли было скопировать файл из Shared Container в комплект приложения.

Я получаю путь к файлу следующим образом:

let filePath = NSFileManager.defaultManager().containerURLForSecurityApplicationGroupIdentifier("group.com.sharedBasemap")!.URLByAppendingPathComponent("localLayer.tpk")!.path

Причина, по которой я пытаюсь это сделать, заключается в том, что ArcGIS SDK не распознает файл TPK из группы приложений, поэтому мне интересно, распознает ли он его, если я скопирую его в комплект приложений.

РЕДАКТИРОВАТЬ: На основании комментария Лео, кажется, что вы не можете скопировать в комплект, поэтому я пытаюсь скопировать в папку поддержки приложений.
Вот мой код, я вижу сообщение "файл существует", но затем отображается сообщение "Ой", указывающее, что файл не может быть перемещен:

let filePath = NSFileManager.defaultManager().containerURLForSecurityApplicationGroupIdentifier("group.com.sharedBasemap")!.URLByAppendingPathComponent("localLayer.tpk")!.path!
let appSupportFolder = String(NSFileManager.defaultManager().URLsForDirectory(.ApplicationSupportDirectory, inDomains: .UserDomainMask)[0]) + "localLayer.tpk"
let fileManager = NSFileManager.defaultManager()

if NSFileManager.defaultManager().fileExistsAtPath(filePath){
    print("File exists at \(filePath)")
    do {
        try fileManager.copyItemAtPath(filePath, toPath: appSupportFolder)
    }
    catch let error as NSError {
        print("Ooops! Something went wrong: \(error)")
    }
} else {
    print("File does not exist")
}

РЕДАКТИРОВАТЬ 2: я снова изменил код, чтобы просто переместить файл TPK в каталог документов.
Я считаю, что эта часть работает, но я получаю сообщение об ошибке при попытке загрузить файл TPK в ArcGIS.
На данный момент я думаю, что проблема связана с ArcGIS SDK и что он не поддерживает загрузку файла TPK из любой точки, кроме пакета приложения.

let destPath = NSSearchPathForDirectoriesInDomains(.DocumentDirectory, .UserDomainMask, true).first!
let fullDestPath = NSURL(fileURLWithPath: destPath).URLByAppendingPathComponent("localLayer.tpk")
let fullDestPathString = fullDestPath!.path!

1 ответ

Я уверен, что appSupportFolder не существует по умолчанию - никто не создает его, если в этом нет необходимости - попробуйте сначала проверить это и создать его, если необходимо

pseudocode if(!fileExists(supportFolder)) { createDirectory(supportFolder) }
Другие вопросы по тегам