gpt4 book ai didi

ios - 将 RxSwift 可观察结果绑定(bind)到另一个可观察对象

转载 作者:行者123 更新时间:2023-12-01 16:06:36 25 4
gpt4 key购买 nike

我有一个管理一个名为 Profile 的对象的 observable:

class Profile {
let name. : String
let surname : String
let avatar: String?
}

Observable<Profile>

这个 observable 被绑定(bind)到 view model,它同时有一个 observable 属性叫做

var initialMarks:Observable<String>

那是姓名和姓氏属性的首字母。如果头像属性为零,则显示此首字母。

我有一个函数可以返回字符串中的首字母:

func initialLetters(first:String, second: String) -> String

如何通过使用 RxSwift 任何运算符来实现这一点:
  • 访问头像属性。
  • 检查它是否为零。
  • 如果为 nil,则调用函数 initialLetters。
  • 将函数 initialLetters 绑定(bind)到可观察的 initialLetters。

  • 非常感谢。

    最佳答案

    这只是一个简单的映射...

    这是它自己的 View 模型。

    func initialMarks(for profile: Observable<Profile>) -> Observable<String> {
    return profile
    .compactMap { profile in
    if profile.avatar == nil {
    return initialLetters(first: profile.name, second: profile.surname)
    }
    else {
    return nil
    }
    }
    }

    如果您想将其嵌入到 View 模型结构/类中,您可以执行以下操作:
    struct ViewModel {
    let profile: Observable<Profile>

    var initialMarks: Observable<String> {
    return profile
    .map { profile in
    if profile.avatar == nil {
    return initialLetters(first: profile.name, second: profile.surname)
    }
    else {
    return ""
    }
    }
    }
    }

    此外,根据您的需要,上面的两个实现也有细微的不同......在第一个中,它仅在头像为 nil 时发出首字母,第二个在头像存在时发出空字符串,或者在头像为 nil 时发出首字母。

    关于ios - 将 RxSwift 可观察结果绑定(bind)到另一个可观察对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58797756/

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