在我的项目中,我需要将用户 ID 发送到 iOS 中的小部件。但为此,我的用户需要打开应用程序一次。如果不打开,信息仅保留 1 天,之后信息就会消失,小部件将停止显示信息并等待打开申请。为此,我使用了 appGroup。
将数据从我的项目传输到小部件的正确方法是什么?
雨燕5
按照以下步骤将数据从主机应用程序传递到扩展程序。
if let userDefaults = UserDefaults(suiteName: "group.com.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 {
}
Run Code Online (Sandbox Code Playgroud)
if let userDefaults = UserDefaults(suiteName: "group.com.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)")
}
}
Run Code Online (Sandbox Code Playgroud)
希望这会有所帮助。干杯!
| 归档时间: |
|
| 查看次数: |
7705 次 |
| 最近记录: |