要从主应用程序发送到键盘扩展的图像
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" 是我获取图像数组的关键。
我有一个主应用程序视图控制器,其中使用用户默认值设置和获取图像,如下所示:
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" 是我获取图像数组的关键。