-1

我正在尝试向我的应用程序添加贴纸扩展,以便用户可以在我的应用程序中创建贴纸,然后在消息中使用它们。但是,文件路径似乎不同,所以我无法将图像保存到文件路径,然后将它们加载到消息扩展名中。基本上,在应用程序及其扩展程序之间共享数据的最佳方式是什么?特别是对于 NSUserDefaults 来说太大的数据。

4

2 回答 2

1

AppGroups如果您想在主项目和应用程序扩展之间共享数据,您必须启用。

启用它和共享数据的完整教程可以在这里找到 ( http://www.theappguruz.com/blog/ios8-app-groups )。

启用后AppGroups,您可以将创建的贴纸存储在共享容器中,如下所示:

if let fileManager = FileManager.default.containerURL(forSecurityApplicationGroupIdentifier: "") 
{
     let imageName = "imageName" // write your image name here
     let imageLocationUrl = fileManager.appendingPathComponent(imageName)

     // for saving image

     if let data:Data = UIImagePNGRepresentation(image) {
         do {
            try data.write(to: imageLocationUrl)
         }catch {
                // couldn't write
         }
     }
}

为了获取图像,

if let fileManager = FileManager.default.containerURL(forSecurityApplicationGroupIdentifier: "") 
{
     let imageName = "imageName" // write your image name here
     let imageLocationUrl = fileManager.appendingPathComponent(imageName)

     // for getting image

     if let data:Data = Data(contentsOfFile: imageLocationUrl.path) {
        let image = UIImage(data: data, scale: UIScreen.main.scale)
     }
}      
于 2017-10-31T19:23:57.800 回答
0

我想出了答案,将目标放在一个组中,您可以访问相同的 fileManager 路径

于 2017-10-31T19:14:22.303 回答