Post

Replies

Boosts

Views

Activity

Reply to iOS27: Bar Marks in Swift Charts exhibit multiple severe issues
I discovered another Swift Charts issue on iOS27. The anchor parameter of AxisValueLabel is not respected. .chartXAxis { AxisMarks { value in AxisValueLabel(anchor: .topLeading) { if let dateString = value.as(String.self), let value = data.first(where: { $0.formattedDate == dateString }) { VerticalLabel(label: value.dateLabel, degrees: 45) } } } } iOS26.5: the label is correctly anchored by its top leading edge. iOS27: the label is centered.
Topic: UI Frameworks SubTopic: SwiftUI Tags:
Jul ’26
Reply to SwiftData - Context missing for optional
I also tried changing the method of deletion to the following. This tries to delete entity Object that has a to-many relationship children: [Child]. guard let id = object.id else { return } do { try container.mainContext.delete(model: Object.self, where: #Predicate { object in object.id == id }) } catch { print(error) } This does not crash the app, but fails to delete the entity with the following console output: Error Domain=NSCocoaErrorDomain Code=134060 "A Core Data error occurred." UserInfo={Reason=Entity named:Object not found for relationship named:children, MissingEntity=Object. (<NSEntityDescription: 0x6000035100b0>) ... I'm not sure what this means, perhaps someone more clever will find it useful. @DTS Engineer
Topic: App & System Services SubTopic: iCloud Tags:
Aug ’24
Reply to EditMode & EditButton not working in a way I expect
We also have this issue. Feedback submitted some time ago under FB13201571. Editing works, as long as NavigationStack is not used. This works. struct ListSelectionTest: View { @State var selection: Set<String> = [] let strings = ["One", "Two", "Three"] var body: some View { VStack { EditButton() List(selection: $selection) { ForEach(strings, id: \.self) { string in Text(string).tag(string) } } } } } The problem appears when the List is wrapped in NavigationStack. This only works when the EditButton is tapped TWICE. struct ListSelectionTest: View { @State var selection: Set<String> = [] let strings = ["One", "Two", "Three"] var body: some View { NavigationStack { VStack { EditButton() List(selection: $selection) { ForEach(strings, id: \.self) { string in Text(string).tag(string) } } } } } } Replacing EditButton with a custom Button produces a different visual error. Editing is set correctly, but the multi-selection indicators quickly appear and then disappear again. struct ListSelectionTest: View { @Environment(\.editMode) private var editMode @State var selection: Set<String> = [] let strings = ["One", "Two", "Three"] var body: some View { NavigationStack { VStack { Button((editMode?.wrappedValue.isEditing ?? false) ? "Done" : "Edit") { editMode?.wrappedValue = (editMode?.wrappedValue.isEditing ?? false) ? .inactive : .active } List(selection: $selection) { ForEach(strings, id: \.self) { string in Text(string).tag(string) } } } } } } In short, we suspect there is a SwiftUI bug related to triggering List editing when the list is in NavigationStack.
Topic: UI Frameworks SubTopic: SwiftUI Tags:
Dec ’23
Reply to SwiftData @Environment can't use bindings?
Same problem here. I'm struggling with extracting NavigationPath() into a separate class using @Observable. When this class is marked as @Observable, typing NavigationStack(path: viewModel.path) {...} results in error: Cannot convert value of type 'NavigationPath' to expected argument type 'Binding<NavigationPath>' Variations like $viewModel.path or viewModel.$path do not work either. The only "working" solution is: var body: some View { @Bindable var bindable = viewModel NavigationStack(path: $bindable.path) {...} } But this is very hacky.
Topic: App & System Services SubTopic: iCloud Tags:
Jul ’23
Reply to Cloudkit constraint issue
I struggled with this a year ago. In the end I restructured my model so it works without unique constraints. For example, you may have a many-to-many relationship between entities Color and Animal (an animal may have multiple colours, and vice-versa: a specific colour may be found on various animals). Without unique constraints, you can fetch animals by colour like this:     if colorFilter != .noValue {       // any animal where color in colors relationship contains value       predicates.append(NSPredicate(format: "ANY colors.color == %@", colorFilter.rawValue))     }
Topic: App & System Services SubTopic: iCloud Tags:
Feb ’23
Reply to iOS27: Bar Marks in Swift Charts exhibit multiple severe issues
I discovered another Swift Charts issue on iOS27. The anchor parameter of AxisValueLabel is not respected. .chartXAxis { AxisMarks { value in AxisValueLabel(anchor: .topLeading) { if let dateString = value.as(String.self), let value = data.first(where: { $0.formattedDate == dateString }) { VerticalLabel(label: value.dateLabel, degrees: 45) } } } } iOS26.5: the label is correctly anchored by its top leading edge. iOS27: the label is centered.
Topic: UI Frameworks SubTopic: SwiftUI Tags:
Replies
Boosts
Views
Activity
Jul ’26
Reply to SwiftData - Context missing for optional
I also tried changing the method of deletion to the following. This tries to delete entity Object that has a to-many relationship children: [Child]. guard let id = object.id else { return } do { try container.mainContext.delete(model: Object.self, where: #Predicate { object in object.id == id }) } catch { print(error) } This does not crash the app, but fails to delete the entity with the following console output: Error Domain=NSCocoaErrorDomain Code=134060 "A Core Data error occurred." UserInfo={Reason=Entity named:Object not found for relationship named:children, MissingEntity=Object. (<NSEntityDescription: 0x6000035100b0>) ... I'm not sure what this means, perhaps someone more clever will find it useful. @DTS Engineer
Topic: App & System Services SubTopic: iCloud Tags:
Replies
Boosts
Views
Activity
Aug ’24
Reply to EditMode & EditButton not working in a way I expect
We also have this issue. Feedback submitted some time ago under FB13201571. Editing works, as long as NavigationStack is not used. This works. struct ListSelectionTest: View { @State var selection: Set<String> = [] let strings = ["One", "Two", "Three"] var body: some View { VStack { EditButton() List(selection: $selection) { ForEach(strings, id: \.self) { string in Text(string).tag(string) } } } } } The problem appears when the List is wrapped in NavigationStack. This only works when the EditButton is tapped TWICE. struct ListSelectionTest: View { @State var selection: Set<String> = [] let strings = ["One", "Two", "Three"] var body: some View { NavigationStack { VStack { EditButton() List(selection: $selection) { ForEach(strings, id: \.self) { string in Text(string).tag(string) } } } } } } Replacing EditButton with a custom Button produces a different visual error. Editing is set correctly, but the multi-selection indicators quickly appear and then disappear again. struct ListSelectionTest: View { @Environment(\.editMode) private var editMode @State var selection: Set<String> = [] let strings = ["One", "Two", "Three"] var body: some View { NavigationStack { VStack { Button((editMode?.wrappedValue.isEditing ?? false) ? "Done" : "Edit") { editMode?.wrappedValue = (editMode?.wrappedValue.isEditing ?? false) ? .inactive : .active } List(selection: $selection) { ForEach(strings, id: \.self) { string in Text(string).tag(string) } } } } } } In short, we suspect there is a SwiftUI bug related to triggering List editing when the list is in NavigationStack.
Topic: UI Frameworks SubTopic: SwiftUI Tags:
Replies
Boosts
Views
Activity
Dec ’23
Reply to SwiftData @Environment can't use bindings?
Same problem here. I'm struggling with extracting NavigationPath() into a separate class using @Observable. When this class is marked as @Observable, typing NavigationStack(path: viewModel.path) {...} results in error: Cannot convert value of type 'NavigationPath' to expected argument type 'Binding<NavigationPath>' Variations like $viewModel.path or viewModel.$path do not work either. The only "working" solution is: var body: some View { @Bindable var bindable = viewModel NavigationStack(path: $bindable.path) {...} } But this is very hacky.
Topic: App & System Services SubTopic: iCloud Tags:
Replies
Boosts
Views
Activity
Jul ’23
Reply to Cloudkit constraint issue
I struggled with this a year ago. In the end I restructured my model so it works without unique constraints. For example, you may have a many-to-many relationship between entities Color and Animal (an animal may have multiple colours, and vice-versa: a specific colour may be found on various animals). Without unique constraints, you can fetch animals by colour like this:     if colorFilter != .noValue {       // any animal where color in colors relationship contains value       predicates.append(NSPredicate(format: "ANY colors.color == %@", colorFilter.rawValue))     }
Topic: App & System Services SubTopic: iCloud Tags:
Replies
Boosts
Views
Activity
Feb ’23