I am revisiting one my apps which I use WidgetKit, it worked fine in it’s implementation however when running for iOS 17 with Xcode 15 the data no longer reads/writes from user defaults.
From the main iOS app I write to the UserDefaults
// Set
let list = ["one", "two", "three"]
var AppGroup: String {
"group.com.appname.com.contents"
}
let defaults = UserDefaults(suiteName: AppGroup)!
defaults.set(payments, forKey: "todolist")
Then I read the data on the Widget extension like so
class DataHelper {
var list: [String] {
return defaults!.object(forKey: "todolist") as? [String] ?? [String]()
}
}
In the WidgetView
struct ListWidget: Widget {
let kind: String = "ListWidget"
let dataHelper = DataHelper()
var body: some WidgetConfiguration {
StaticConfiguration(kind: kind, provider: ListProvider()) { entry in
ListWidgetView(budgets: dataHelper.todolist)
}
.configurationDisplayName("List")
.description("See your List")
.supportedFamilies([.systemSmall])
}
}
struct ListWidgetView : View {
@Environment(.widgetFamily) var family: WidgetFamily
var list: [String]
@ViewBuilder
var body: some View {
switch family {
case .systemLarge: ListOverview(list: todolist)
default: ListOverview(budgets: list)
}
}
}
struct ListOverview : View {
var list: [String]
var todolist: [String[ {
if list.isEmpty {
return "no list". <-- THIS IS RETURNED
} else {
return list[0]
}
}
var body: some View {
// Progress Ring
ZStack(alignment:.center) {
//Label
VStack(alignment: .center, spacing: 8) {
Text(todolist)
.foregroundStyle(.white)
.lineLimit(1)
}
}
.containerBackground(Color.black, for: .widget)
}
}