WatchKit 2.0扩展应用中的沙箱如何工作?

时间:2015-09-28 01:13:58

标签: watchkit

我正在使用WatchKit 2.0和新的WCSession类在手表和手机应用程序之间来回通信。我需要生成一些在手机上处理的图形,然后通过回调返回图像数据。我知道WatchKit可以访问NSFileManager我只是不确定存储数据的位置。

只是为了澄清:我想知道WatchKit扩展上的沙箱的目录结构是否与iPhone应用程序相同。是否使用NSDocumentDirectory推荐的地方存储图片?这些是特殊规则/限制/指导方针吗?我在文档中找不到这个。

1 个答案:

答案 0 :(得分:3)

我在Apple Watch应用上使用.DocumentDirectory,它按预期工作。以下是相关代码,为简洁起见而简化:

func session(session: WCSession, didReceiveFile file: WCSessionFile) {

    let documents_path = NSSearchPathForDirectoriesInDomains(.DocumentDirectory, .UserDomainMask, true)[0] as NSString
    let path = String(documentsPath) + "/my_new_file.png"
    let dest_url = NSURL(string: "file://" + path)

    do {
        try NSFileManager.defaultManager().moveItemAtURL(file.fileURL, toURL: dest_url!)
        print("New file located at: \(path)")
    }
    catch let err as NSError {
        print(err)
        return
    }

}

https://developer.apple.com/library/watchos/documentation/General/Conceptual/AppleWatch2TransitionGuide/UpdatetheAppCode.html处有一些相关文档,即:

  

数据展示位置。 WatchKit扩展必须在管理文件方面发挥更积极的作用。 WatchKit扩展的容器目录与iOS应用程序的容器具有相同的基本结构。将用户数据和其他关键信息放在Documents目录中。尽可能将文件放在Caches目录中,以便在可用磁盘空间不足时系统可以删除它们。