Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/swift/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Swift 如何迭代任意_Swift_Iteration - Fatal编程技术网

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
    }


}
ReceivedMessagesSentMessages都是结构,如果需要查看更多代码,请询问。

使用可选绑定:

guard let received = i as? ReceivedMessage
不要将
消息
声明为
[Any]
,而是使
接收消息
发送消息
采用公共协议,然后
消息
将是采用该协议的一组对象:

protocol Message {

}

struct SentMessage: Message {

}

struct ReceivedMessage: Message {

}

var messages: [Message]

“我想知道如何迭代不同类型的对象数组”最好的方法:不要。我明白,但如果我采用协议中的所有内容,我也可以创建一个结构?@EliasKnudsen当然,最好使用布尔值来区分接收和发送的消息hanks,创建不同的结构是愚蠢的,一条消息共享许多相似的属性,唯一的区别是它是被发送的还是被接收的?随着时间的推移,你可能会发现,一封邮件的状态可能不仅仅是发送和接收感谢你的建议@be