在SwiftUI中实现业务和其他逻辑

在SwiftUI中实现业务和其他逻辑,swiftui,Swiftui,(这是我的第一个SwiftUI项目;如果这是一个愚蠢的问题,请客气。) 我有一个显示在选择器中的对象集合。选择器选择为$selectedIndex,其中 @State private var selectedIndex: Int = 0 我也有一个 @State private var opts: OptsStruct = OptsStruct() 其中optstruct结构的元素绑定到SwiftUI视图。当selectedIndex更改时,opts的值需要更改,因为opts属性是中显示的选

(这是我的第一个SwiftUI项目;如果这是一个愚蠢的问题,请客气。)

我有一个显示在选择器中的对象集合。选择器选择为$selectedIndex,其中

@State private var selectedIndex: Int = 0
我也有一个

@State private var opts: OptsStruct = OptsStruct()
其中optstruct结构的元素绑定到SwiftUI视图。当selectedIndex更改时,opts的值需要更改,因为opts属性是中显示的选项,由选择器选择。(另外,我想在UserDefaults中保存selectedIndex的当前值。)问题是我不知道如何在SwiftUI中表达这些操作

我试过了

@State private var selectedIndex: Int = 0 {
    mutating didSet {
        // save selectedIndex to UserDefaults
        opts = f(selectedIndex)
    }
但这会导致分割错误

把这种逻辑放在“正确”的地方。(总的来说,有人能推荐一些关于如何用一般业务逻辑连接到SwiftUI@States的更改的阅读资料吗。)

谢谢,
里克一个
@State
变量的想法是让它成为真理的唯一来源()。这意味着只有一个变量应该包含选择器的“状态”。在这种情况下,我建议使用以下方法:

$opts.selectionIndex

作为选择器的
绑定
selectionIndex
将成为您的
OptStruct
类型的
Int
属性。

我想我在我的原始帖子中不清楚,因为这并不能解决问题。问题是selectionIndex(由选择器)更改,需要更改一个全新的opts结构。selectionIndex是UI中选取器的真实性来源,而opts结构是UI其余部分的真实性来源。基本上,选择器是选择将用于UI其余部分的opts结构(从possibili@user3376086也许可以尝试将
optstruct
作为一个计算属性?在我看来,你仍然没有一个真实的来源,但我不知道如何帮助你把它归结为一个。