Swift 如何迭代任意
我想知道如何迭代不同类型的对象数组。该数组如下所示:Swift 如何迭代任意,swift,iteration,Swift,Iteration,我想知道如何迭代不同类型的对象数组。该数组如下所示: var messages: [Any] = [SentMessage(sent_text: "Halla", date_sent: "24.des", isSent: true, sending: false), RecievedMessage(profile_image: UIImage(named: "baseline_account_box_black_18pt")!, recieved_text: "Hei hva skjer?",
var messages: [Any] = [SentMessage(sent_text: "Halla", date_sent: "24.des", isSent: true, sending: false), RecievedMessage(profile_image: UIImage(named: "baseline_account_box_black_18pt")!, recieved_text: "Hei hva skjer?", date_recieved: "25.des", isRecieved: true)]
for i in messages{
guard let received = ReceivedMessage(i) else{
return
}
}
我尝试像这样转换迭代器:
var messages: [Any] = [SentMessage(sent_text: "Halla", date_sent: "24.des", isSent: true, sending: false), RecievedMessage(profile_image: UIImage(named: "baseline_account_box_black_18pt")!, recieved_text: "Hei hva skjer?", date_recieved: "25.des", isRecieved: true)]
for i in messages{
guard let received = ReceivedMessage(i) else{
return
}
}
ReceivedMessages和SentMessages都是结构,如果需要查看更多代码,请询问。使用可选绑定:
guard let received = i as? ReceivedMessage
不要将消息
声明为[Any]
,而是使接收消息
和发送消息
采用公共协议,然后消息
将是采用该协议的一组对象:
protocol Message {
}
struct SentMessage: Message {
}
struct ReceivedMessage: Message {
}
var messages: [Message]
“我想知道如何迭代不同类型的对象数组”最好的方法:不要。我明白,但如果我采用协议中的所有内容,我也可以创建一个结构?@EliasKnudsen当然,最好使用布尔值来区分接收和发送的消息hanks,创建不同的结构是愚蠢的,一条消息共享许多相似的属性,唯一的区别是它是被发送的还是被接收的?随着时间的推移,你可能会发现,一封邮件的状态可能不仅仅是发送和接收感谢你的建议@be