У меня есть два массива объектов, которые выглядят так:
MeetingRoomSuggestions
:
init(suggestionReason: String, organizerAvailability: String,
startTime: String, endTime: String, dStart: Date, availability: String,
emailAddress: String, displayName: String, roomEmail: String,
occupancy: Int, building: String)
и Bookings
:
init(startTime: String, endTime: String, dStart: Date, organizer :
String, location : String, subject : String)
Я хочубыть в состоянии фильтровать / исключать MeetingRoomSuggestion
объекты из моего массива, если свойство dStart
существует в массиве Bookings
.
Мой код:
let filteredArr = meetingRoomSuggestions.filter { meeting in
return bookingArray!.contains(where: { booking in
return booking.dStart == meeting.dStart
})
}
Я также пытался отфильтроватьСтартовая строка - которая одинакова в обоих.Когда я распечатываю оба массива перед фильтрацией - вы можете ясно видеть, что существует резервирование с тем же dStart
.Как я могу исключить это?
После фильтрации и печати с использованием кода:
print("meetings:")
for meeting in self.meetingRoomSuggestions {
print(meeting.roomEmail)
print(meeting.dStart)
print(meeting.startTime)
}
print()
print("bookings:")
for booking in self.bookingArray! {
print(booking.location)
print(booking.dStart!)
print(booking.start)
}
print("filtered array: ", filteredArr)
for items in filteredArr {
print("email: ", items.roomEmail)
print("dstart: ", items.dStart)
}
Возвращает:
meetings:
FirstFloorTestMeetingRoom1@qubbook.onmicrosoft.com
2019-02-20 15:00:00 +0000
2019-02-20T15:00:00.0000000
GroundFloorTestMeetingRoom1@qubbook.onmicrosoft.com
2019-02-20 15:00:00 +0000
2019-02-20T15:00:00.0000000
bookings:
FirstFloorTestMeetingRoom1@qubbook.onmicrosoft.com
2019-02-20 15:00:00 +0000
2019-02-20T15:00:00.0000000
gfprojectroom1@qubbook.onmicrosoft.com
2019-02-21 10:00:00 +0000
2019-02-21T10:00:00.0000000
gfprojectroom1@qubbook.onmicrosoft.com
2019-02-21 16:00:00 +0000
2019-02-21T16:00:00.0000000
filtered array: [QUBook.MeetingSuggestion, QUBook.MeetingSuggestion]
email: FirstFloorTestMeetingRoom1@qubbook.onmicrosoft.com
dstart: 2019-02-20 15:00:00 +0000
email: GroundFloorTestMeetingRoom1@qubbook.onmicrosoft.com
dstart: 2019-02-20 15:00:00 +0000
По какой-то причине отфильтрованный массив совпадает с исходным meetingRoomSuggestions
массив - он не отфильтровывает вхождение объекта с тем же dStart
.Я подозреваю, что фильтр не так?Ранее я мог фильтровать массив объектов, сравнивая их с массивом строк и т. Д., Но не так.