本文介绍了快速将数据从项目传输到小部件的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
限时送ChatGPT账号..在我的项目中,我需要将用户 ID 发送到 iOS 中的小部件.但是要做到这一点,我的用户需要打开应用程序一次.不开放,信息只保留1天,之后消失,widget停止显示信息,等待开放申请.为此,我使用了 appGroup.
将数据从我的项目传输到小部件的正确方法是什么?
At my project i need to send user id's to widget in iOS. But for do that, my user needs to open application once. Without opening, information stays only 1 day, after that it vanishes and widget stops showing information and await for opening application.
For do that i used appGroup.
What is the correct way to use transfer data from my project to widget?
推荐答案
Swift 5
按照以下步骤将数据从宿主应用传递到扩展程序.
Follow these steps to pass data from the host app to extensions.
选择项目目标>能力 >添加新的应用组(如果您已为开发者帐户启用权限,否则请先启用该权限)选择扩展目标并重复相同的操作.if let userDefaults = UserDefaults(suiteName: "group.yourAppgroup") {
createEventDic.removeAll()
let eventDic = NSMutableDictionary()
eventDic.setValue("YourString", forKey: "timeFontName")
createEventDic.append(eventDic)
let resultDic = try? NSKeyedArchiver.archivedData(withRootObject: createEventDic, requiringSecureCoding: false)
userDefaults.set(resultDic, forKey: "setWidget")
userDefaults.synchronize()
} else {
}
现在转到您的应用扩展程序并执行以下步骤以获取传递的数据.
if let userDefaults = UserDefaults(suiteName: "group.yourAppGroup") {
guard let testcreateEvent = userDefaults.object(forKey: "testcreateEvent") as? NSData else {
print("Data not found in UserDefaults")
return
}
do {
guard let eventsDicArray = try NSKeyedUnarchiver.unarchiveTopLevelObjectWithData(testcreateEvent as Data) as? [NSMutableDictionary] else {
fatalError("loadWidgetDataArray - Can't get Array")
}
for eventDic in eventsDicArray {
let timeFontName = eventDic.object(forKey: "timeFontName") as? String ?? ""
}
} catch {
fatalError("loadWidgetDataArray - Can't encode data: \(error)")
}
}
希望它会有所帮助.干杯!
Hopefully, it will help. Cheers!
这篇关于快速将数据从项目传输到小部件的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
更多推荐
[db:关键词]
发布评论