Ios Swift压缩映射返回空
嗨,我正在努力学习RXSwift,我第一次接触到这些概念,比如地图和紧凑地图 我能够得到响应,但这行总是返回空 objects.compactMap(DummyUser.init)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
在您的
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)