Ios Swift压缩映射返回空

Ios Swift压缩映射返回空,ios,iphone,swift,functional-programming,rx-swift,Ios,Iphone,Swift,Functional Programming,Rx Swift,嗨,我正在努力学习RXSwift,我第一次接触到这些概念,比如地图和紧凑地图 我能够得到响应,但这行总是返回空 objects.compactMap(DummyUser.init) 在您的DummyUser模型中,您使用的是可失败的初始值设定项,因此如果为init方法提供了错误的字典,它将返回nil compactMap自动过滤nil,这就是输出为空的原因 看看这段代码: let names = objects.map { $0["name"]!} return objects.compactM

嗨,我正在努力学习RXSwift,我第一次接触到这些概念,比如地图和紧凑地图

我能够得到响应,但这行总是返回空

objects.compactMap(DummyUser.init)


在您的
DummyUser
模型中,您使用的是可失败的初始值设定项,因此如果为init方法提供了错误的字典,它将返回
nil

compactMap
自动过滤
nil
,这就是输出为空的原因

看看这段代码:

let names = objects.map { $0["name"]!}
return objects.compactMap(DummyUser.init)

我会调试这个名为
names
的变量,因为它可能对
DummyUser
初始值设定项有错误的输入。它应该是包含所有
DummyUser
参数的字典。您还可以调试失败的初始值设定项,以查看缺少哪一个参数。

检查此项。。将Ddob=birthdata[“dob”]设为?字符串,听起来不对。。也许你想约会或者年龄
import Foundation

typealias AnyDict = [String: Any]

class DummyUser {
    let gender: String
    let name: AnyDict
    let dob: String
    let picture: AnyDict

    init?(dictionary: AnyDict) {
        guard let Dgender = dictionary["gender"] as? String,
             let Dname = dictionary["name"] as? AnyDict,
             let birthdata = dictionary["dob"] as? AnyDict,
             let Ddob = birthdata["dob"] as? String,
             let Dpicture = dictionary["picture"] as? AnyDict
            else {
                return nil
        }

        gender = Dgender
        name = Dname
        dob = Ddob
        picture = Dpicture
    }



    var dictionary: AnyDict {
        return [
            "user": ["name" : name, "gender": gender, "dob": dob],
            "picture" : ["userImage": picture]
        ]
    }

}
let names = objects.map { $0["name"]!}
return objects.compactMap(DummyUser.init)