我有一个存在于 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!