Swift &引用;“拆开包装”;从Firebase检索的数据

Swift &引用;“拆开包装”;从Firebase检索的数据,swift,firebase,subscript,Swift,Firebase,Subscript,因此,我设法从Firebase中检索了一些数据,打印时如下所示: [餐厅.客户列表(键:“-LQLHEMNZB8KAHA9UCK”,客户列表名称: “肯德里克”,顾客名字:“安娜”,顾客吃:“100”, 客户订单:“面条”,时间戳:1541290545703.0)] 问题:如何展开它们,以便将单个值放入其他字符串变量中? 我尝试了很多方法,但我遇到了一些错误,例如如果我执行类似于let custName=self的操作,就不能用String类型的索引为[CustomerList]类型的值下标?字

因此,我设法从
Firebase
中检索了一些
数据,打印时如下所示:

[餐厅.客户列表(键:“-LQLHEMNZB8KAHA9UCK”,客户列表名称: “肯德里克”,顾客名字:“安娜”,顾客吃:“100”, 客户订单:“面条”,时间戳:1541290545703.0)]

问题:如何展开它们,以便将单个值放入其他字符串变量中? 我尝试了很多方法,但我遇到了一些错误,例如如果我执行类似于
let custName=self的操作,就不能用
String
类型的索引为
[CustomerList]
类型的值下标?字符串

ps.
CustomerList
是一个
struct

pps。
列表
的打印输出就是所显示的

,因为您有一个
客户列表
对象的列表,即
[CustomerList]
,所以您应该首先从该
列表
中获取一个对象。假设我们希望此
列表中的第一个对象访问其属性,然后我们可以按如下所示进行操作

if let firstCustomer = self.list.first {
    let firstName = firstCustomer.customerFirstName
    let lastName = firstCustomer.customerLastName
}
let index = 0
let customer = self.list[index]
let firstName = customer.customerFirstName
let lastName = customer.customerLastName
let johny = self.list.filter{ $0.customerFirstName == "Jonhny"}.first {
    print(johny.customerLastName)
}
let lastNamesArray = self.list.map({ $0.customerLastName })
如果要访问特定
索引中的对象,可以执行以下操作:

if let firstCustomer = self.list.first {
    let firstName = firstCustomer.customerFirstName
    let lastName = firstCustomer.customerLastName
}
let index = 0
let customer = self.list[index]
let firstName = customer.customerFirstName
let lastName = customer.customerLastName
let johny = self.list.filter{ $0.customerFirstName == "Jonhny"}.first {
    print(johny.customerLastName)
}
let lastNamesArray = self.list.map({ $0.customerLastName })
要查找特定的
客户
,您可以
筛选
,如下所示

if let firstCustomer = self.list.first {
    let firstName = firstCustomer.customerFirstName
    let lastName = firstCustomer.customerLastName
}
let index = 0
let customer = self.list[index]
let firstName = customer.customerFirstName
let lastName = customer.customerLastName
let johny = self.list.filter{ $0.customerFirstName == "Jonhny"}.first {
    print(johny.customerLastName)
}
let lastNamesArray = self.list.map({ $0.customerLastName })
要获取从客户列表创建的自定义列表,您可以使用
map
,如下所示

if let firstCustomer = self.list.first {
    let firstName = firstCustomer.customerFirstName
    let lastName = firstCustomer.customerLastName
}
let index = 0
let customer = self.list[index]
let firstName = customer.customerFirstName
let lastName = customer.customerLastName
let johny = self.list.filter{ $0.customerFirstName == "Jonhny"}.first {
    print(johny.customerLastName)
}
let lastNamesArray = self.list.map({ $0.customerLastName })

哇,第一个解决了这个问题!非常感谢你!如果你不介意我问的话,“.first”在这个上下文中做什么?实际上它只是一个助手,可以获取
数组
索引
0
(第一个元素的索引)。愚蠢的问题,为什么我不能简单地使用list[0]要检索数据?@Tomiris如果数组中没有任何元素,并且尝试访问
列表[0]
,它将抛出一个超出范围的错误索引。但是如果您先使用
.first
,它将返回
nil
。所以,如果您安全地打开
列表。首先,它将永远不会崩溃。@Tomiris它有多奇怪
.first
返回可选值,这意味着如果元素存在,它将返回该元素,否则
nil
。这样想吧<代码>如果列表[0]存在,则返回列表[0],否则返回nil