在主机应用和今天的扩展之间共享用户生成的图像的最佳方式是什么

时间:2017-01-21 05:10:17

标签: ios swift today-extension

我知道在主应用程序和小部件之间共享数据是使用NSUserDefaults或CoreData,但不建议使用它们来共享图像。要存储用户生成的图片,应用应该使用应用的文档目录,但无法从窗口小部件访问,那么应用应该如何与其共享图像?

1 个答案:

答案 0 :(得分:0)

我使用共享应用程序组目录来保存图像并从容器应用程序和扩展程序访问它,这里是代码。

保存图片

 public func saveImage(image:UIImage){        
    let fileManager = FileManager.default
    let directory = fileManager.containerURL(forSecurityApplicationGroupIdentifier: "yourappgroup")?.appendingPathComponent("yourImagename.jpg")
    let imageData = UIImageJPEGRepresentation(image, 1)
    fileManager.createFile(atPath: (directory?.path)!, contents: imageData, attributes: nil)
}

获取已保存的图片

public func saveImage() -> UIImage {
let fileManager = FileManager.default
    if let imagePath = fileManager.containerURL(forSecurityApplicationGroupIdentifier: "yourappgroup")?.appendingPathComponent("yourImagename.jpg").path {            
        if fileManager.fileExists(atPath: imagePath){                
            return UIImage(contentsOfFile: imagePath)
        }else{
            print("No Image")                
            return nil
        }
    }