0

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

我得到的文件路径如下:

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

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

编辑:根据 Leo 的评论,您似乎无法复制到捆绑包,所以我正在尝试复制到 App Support 文件夹。
这是我的代码,我看到“文件存在”消息,但随后显示 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 时收到错误消息。
目前,我认为该问题与 ArcGIS SDK 有关,并且它不支持从除应用程序包之外的任何位置加载 TPK 文件。

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

1 回答 1

0

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

pseudocode if(!fileExists(supportFolder)) { createDirectory(supportFolder) }
于 2016-10-12T13:09:06.227 回答