Скопируйте файл 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) }