在 iOS 14 中在主应用程序和小部件之间共享 UserDefaults

Sharing UserDefaults between main app and Widget in iOS 14

我正在为 iOS 编写一个小部件,似乎在小部件中无法访问 UserDefaults,我按如下方式添加了应用程序组,但它仍然为零:

let prefs = UserDefaults(suiteName:"group.myco.myapp")

当我尝试从 prefs 中读取我在主应用程序中设置的内容时,这里是零。

您需要将 AppGroup 功能添加到小部件目标。 Select 项目,然后 select 小部件目标,转到签名和功能选项卡,然后单击 + Capability 按钮。然后选择 AppGroup 并使用您的组进行配置。

正如@Ilya Muradymov 评论的那样

如果要获取widget和container app之间的数据,需要先设置对应组UserDefault的数据:

 //object-C     
 [[NSUserDefaults.alloc initWithSuiteName:@"group.com.your.groupname"] setObject:mObject forKey:@"xxxxxxxx"];
 //swift
 UserDefaults(suiteName:"group.com.your.groupname").set(mObject, forKey: "xxxxxxxx")