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

Image to be sent to keyboard extension from main app

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

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()

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

在键盘扩展中-

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

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

To enable data sharing, use Xcode or the Developer portal to enable app groups for the containing app and its contained app extensions.

阅读:Sharing Data with Your Containing App

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

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

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

步骤 3:确保应用组是根据 Sharing Data with Your Containing App.

创建的

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

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

让默认值 = 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. 让默认值 = 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 是您的应用程序组标识符,您在从共享容器保存和检索数据时必须使用它。 "arrImg" 是我获取图像数组的关键。