【发布时间】:2019-07-14 06:36:57
【问题描述】:
我有两个如下所示的对象数组:
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)
如果dStart 属性存在于Bookings 数组中,我希望能够从我的数组中过滤/排除MeetingRoomSuggestion 对象。
我的代码:
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 的对象的出现。我怀疑过滤器有问题?我以前能够通过将对象数组与字符串数组等进行比较来过滤对象数组,但不是这样。
【问题讨论】:
-
在 MeetingRoomSuggestions init 你在哪里初始化 dstart ??
标签: arrays swift object filter