将TPK文件从AppGroup Container复制到Documents

时间:2016-10-11 20:40:55

标签: swift ios-app-group arcgis-runtime

我有一个存在于AppGroup共享容器中的文件,我想知道是否可以将文件从共享容器复制到应用程序包中。

我得到的文件路径如下:

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

我尝试这样做的原因是,似乎ArcGIS SDK无法从应用程序组中识别TPK文件,因此我想知道如果我将其复制到应用程序包中是否会识别它。

编辑:根据Leo的评论,您似乎无法复制到捆绑包,因此我尝试复制到App Support文件夹。
这是我的代码,我看到& #34;文件存在"消息,但它显示Oops消息,表明它无法移动文件:

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时收到错误消息。 br />目前,我认为该问题与ArcGIS SDK有关,并且它不支持从应用程序包以外的任何地方加载TPK文件。

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

1 个答案:

答案 0 :(得分:0)

我非常确定默认情况下appSupportFolder不存在 - 除非需要,否则没有人创建它 - 尝试首先验证它并在需要时创建它

pseudocode if(!fileExists(supportFolder)) { createDirectory(supportFolder) }