传递已发布的 属性 作为绑定
Pass a published property as binding
我有一个 ObservableObject
,其中包含已发布的字符串字典和带有整数数组的数组:
class MyObservableObject: ObservableObject {
@Published var myDict: [String: [[Int]]]
}
而且我想将一个 Ints 数组作为绑定从同一 class 内部传递给不同结构的函数:
{
...
func someFunc(key: String, index: Int) {
someStruct.func(myDict[key]![index])
}
...
}
我了解 @Published
变量不能作为绑定传递。我仍然希望有任何方法可以实现这一目标。我还尝试使用 inout 变量在另一个结构中存储对数组的引用,但也没有成功。
@Published vars can't be passed as Bindings
这不是真的 - 这是可能的,通过使用“$”的预测值,但您想要传递的不是 属性,而是 属性 的部分值,这是不同的东西。
上下文不明确,这 someFunc
味道 not-well :) - 我想说这里需要一些重构,但是,无论如何, 从技术上讲,可以使用动态 in-place 生成的绑定来做你想做的事,比如
func someFunc(key: String, index: Int) {
guard myDict[key] != nil else { return }
someStruct.func(Binding<[Int]>(
get: { self.myDict[key]![index] },
set: { self.myDict[key]![index] = [=10=] }
))
}
我有一个 ObservableObject
,其中包含已发布的字符串字典和带有整数数组的数组:
class MyObservableObject: ObservableObject {
@Published var myDict: [String: [[Int]]]
}
而且我想将一个 Ints 数组作为绑定从同一 class 内部传递给不同结构的函数:
{
...
func someFunc(key: String, index: Int) {
someStruct.func(myDict[key]![index])
}
...
}
我了解 @Published
变量不能作为绑定传递。我仍然希望有任何方法可以实现这一目标。我还尝试使用 inout 变量在另一个结构中存储对数组的引用,但也没有成功。
@Published vars can't be passed as Bindings
这不是真的 - 这是可能的,通过使用“$”的预测值,但您想要传递的不是 属性,而是 属性 的部分值,这是不同的东西。
上下文不明确,这 someFunc
味道 not-well :) - 我想说这里需要一些重构,但是,无论如何, 从技术上讲,可以使用动态 in-place 生成的绑定来做你想做的事,比如
func someFunc(key: String, index: Int) {
guard myDict[key] != nil else { return }
someStruct.func(Binding<[Int]>(
get: { self.myDict[key]![index] },
set: { self.myDict[key]![index] = [=10=] }
))
}