我正在使用WatchKit 2.0和新的WCSession
类在手表和手机应用程序之间来回通信。我需要生成一些在手机上处理的图形,然后通过回调返回图像数据。我知道WatchKit可以访问NSFileManager
我只是不确定存储数据的位置。
只是为了澄清:我想知道WatchKit扩展上的沙箱的目录结构是否与iPhone应用程序相同。是否使用NSDocumentDirectory
推荐的地方存储图片?这些是特殊规则/限制/指导方针吗?我在文档中找不到这个。
答案 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
}
}
数据展示位置。 WatchKit扩展必须在管理文件方面发挥更积极的作用。 WatchKit扩展的容器目录与iOS应用程序的容器具有相同的基本结构。将用户数据和其他关键信息放在Documents目录中。尽可能将文件放在Caches目录中,以便在可用磁盘空间不足时系统可以删除它们。