2015-09-28 66 views
2

我正在使用WatchKit 2.0和新的WCSession类在手表和电话应用程序之间来回传递消息。我需要生成一些在手机上处理的图形,然后图像数据通过回调返回。我知道WatchKit有权访问NSFileManager我只是不确定在哪里存储数据。WatchKit 2.0扩展应用程序中的沙箱如何工作?

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

+0

嗨我已经转移/接收数据,我想知道关于WatchKit扩展的沙箱。为了更加清晰,更新了问题。 – psobko

回答

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目录中,以便系统在可用磁盘空间不足时删除它们。

+0

谢谢你是我正在寻找的答案!所以我猜想缓存目录是可以重新创建的资源的更好选择。 – psobko

相关问题