gpt4 book ai didi

swift - 未设置可选 MutableProperty 的 Reactive Swift 绑定(bind)?

转载 作者:行者123 更新时间:2023-11-28 15:33:07 24 4
gpt4 key购买 nike

所以我最近开始尝试将 ReactiveSwift 合并到我的项目中,但我似乎无法弄清楚为什么当我尝试使用 <~ 运算符设置属性时,我的这一部分代码会给我一个编译错误。

这就是我目前所拥有的,

let bodyDetailViewModel = MutableProperty<BodyDetailViewModel?>(nil)

bodyManager = BodyManager()

let bodyDetailReadySignal = Signal.combineLatest(bodyManager.bodypartName.signal,
bodyManager.bodypartDetail.signal,
bodyManager.bodypartThumbnail.signal,
bodyManager.bodypartHighlighted.signal)

bodyDetailViewModel <~ bodyDetailReadySignal.map {
if $3 == nil { return nil } // this line says Nil is incompatible with BodyDetailViewModel
return BodyDetailViewModel(name: $0, detail: $1, thumbnail: $2, highlighted: $3!)
}

所以正如您在上面看到的给我一个错误的行让我感到困惑,因为我已经将它设置为一个可选属性,所以我不明白为什么它说 nil 值是不兼容的。另外,如果有更好的方法,请告诉我,因为我发现很难找到 reactivecocoa for swift 的资源

最佳答案

这似乎是 Swift 类型推断的限制。我可以在不使用 ReactiveSwift 的情况下重现类似的错误:

let arr = [1, 2, 3, 4]

let newArr = arr.map { elem in
if elem % 2 == 1 { return nil }
return elem / 2
}

在 Swift 3.1.1 中,这给出了错误“无法推断复杂的闭包返回类型;添加显式类型以消除歧义”。

这个有效:

let arr = [1, 2, 3, 4]

let newArr = arr.map { elem -> Int? in
if elem % 2 == 1 { return nil }
return elem / 2
}

那么尝试将 -> BodyDetailViewModel? 添加到您的闭包定义中,看看是否可行。

关于swift - 未设置可选 MutableProperty 的 Reactive Swift 绑定(bind)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44562668/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com