要从主应用程序发送到键盘扩展的图像

时间:2017-08-17 05:27:35

标签: ios swift image keyboard extension-methods

我有一个主应用程序视图控制器,其中使用用户默认值设置和获取图像,如下所示:

animalcat = ["s1.jpg","s2.jpg","s3.jpg","s4.jpg"] 
var appGroupDefaults1 = UserDefaults.standard appGroupDefaults1 = UserDefaults(suiteName:"group.testKeyboard.Emo")!
appGroupDefaults1.set(animalcat, forKey: "imageValue")
appGroupDefaults1.synchronize()

此图片必须在键盘扩展类文件中获取,但图像显示为nil。

在键盘扩展名中 -

let dataArray1 = appGroupDefaults1.object(forKey: "imageValue") print(dataArray1)

如何从主应用程序中获取图像并将其显示在键盘扩展名中,以便在加载键盘时显示?

2 个答案:

答案 0 :(得分:0)

  

要启用数据共享,请使用Xcode或Developer门户为包含应用及其包含的应用扩展程序启用应用组。

阅读:Sharing Data with Your Containing App

以下是需要遵循的一些重要步骤,

第1步:所有图片都应使用bundle在Extension / ContainingApp之间共享。 确保将捆绑包添加到两个目标。

第2步:在Extension / ContainingApp之间共享所有图像后,您可以获得两个目标中的所有图像。

第3步:确保根据Sharing Data with Your Containing App创建应用群组。

如果您正确执行上述步骤,则应该在Extension / ContainingApp中都有图像。

答案 1 :(得分:0)

请检查以下步骤:  1.要将图像从应用程序共享到扩展,您需要启用应用程序组并正确设置。 现在将所有图像保存在sharedContainer中,您可以看到以下代码。

let defaults = UserDefaults.init(suiteName:kAppGroupIdentifier)

        var arrDefault = [String]()
        var arrImages = [String]()

        if (defaults?.object(forKey: "arrImg") != nil) {
            arrDefault =  defaults?.value(forKey: "arrImg") as! [String]
            print("Array : \(String(describing: defaults?.object(forKey: "arrImg")))")

            arrDefault.append(imgName)
        }
        else{
            arrDefault.append(imgName)
        }

        arrImages.removeAll()
        arrImages.append(contentsOf: arrDefault)
        defaults?.set(arrImages, forKey: "arrImg")

并像这样获取它......  2. let defaults = UserDefaults.init(suiteName:kAppGroupIdentifier)

        var arrTemp = [String]()

    if (defaults?.object(forKey: "arrImg") != nil) {
        arrTemp =  defaults?.value(forKey: "arrImg") as! [String]
        print("Array of Image Name : \(String(describing: arrTemp))")}

此处kAppGroupIdentifier是您的appgroup标识符,您必须在保存和检索共享容器中的数据时使用此标识符。 " arrImg"是我获取图像阵列的关键。