【问题标题】:Image to be sent to keyboard extension from main app要从主应用程序发送到键盘扩展的图像
【发布时间】:2017-08-17 05:27:34
【问题描述】:

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

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

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

在键盘扩展中-

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

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

【问题讨论】:

    标签: ios swift image keyboard extension-methods


    【解决方案1】:

    请检查是否有以下步骤: 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. 让 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 是您的应用组标识符,您在从共享容器保存和检索数据时必须使用它。 “arrImg”是我获取图像数组的关键。

    【讨论】:

    • let saved = arrTemp[0] let value = UIImage(named: saved) 一直工作到这里,但是当我想将此数组用于图像时,在扩展应用程序中得到 nil
    • 您是否在变量中保存了任何内容?这里 arrTemp 是图像的 arr 像这样获取图像 let imgURL = sharedContainerURL.path.appending("/(imgName)") let url = URL(fileURLWithPath: imgURL) print("Share Container Url : (url)")跨度>
    • print(saved) 值是 s2.jpg ..但是当我拿它时它返回 nil.SharedContainer url 是未解析的标识符
    • sharedContainerURL 是 FileManager.default.containerURL(forSecurityApplicationGroupIdentifier: kAppGroupIdentifier)!
    • 让 sharedContainerURL = FileManager.default.containerURL(SecurityApplcationGroup‌, Identifier: "group.testKeyboard.Emo")!不工作
    【解决方案2】:

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

    阅读:Sharing Data with Your Containing App

    这里有一些需要遵循的重要步骤,

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

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

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

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

    【讨论】:

    • 已经添加了应用程序组。我可以共享字符串数组但图像有问题
    • @Saranya 好的,所以也提到这个问题。
    • appGroupDefaults = UserDefaults(suiteName:"group.testKeyboard.Emo")!
    • 你能在包含应用程序中获取图像吗?
    • 不...我能够获取字符串数组..无法将图像从主应用程序发送到键盘扩展
    猜你喜欢
    • 1970-01-01
    • 2016-12-04
    • 1970-01-01
    • 2012-09-09
    • 1970-01-01
    • 1970-01-01
    • 2015-02-07
    • 1970-01-01
    • 2017-10-04
    相关资源
    最近更新 更多