Как перебрать массив Any - PullRequest
0 голосов
/ 29 декабря 2018

Я хочу знать, как бы я перебрал массив объектов разных типов.Массив выглядит следующим образом:

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 являются обеими структурами, если необходимо увидеть больше кода, просто спросите.

1 Ответ

0 голосов
/ 29 декабря 2018

Использовать необязательную привязку:

guard let received = i as? ReceivedMessage

Вместо объявления messages как [Any], заставить ReceivedMessage и SentMessage принять общий протокол, а затем messages будет массивом объектовпринятие этого протокола:

protocol Message {

}

struct SentMessage: Message {

}

struct ReceivedMessage: Message {

}

var messages: [Message]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...