У меня есть перечисление BulletinOptions
:
enum BulletinOption {
case notificationPermissions
case enableNotifications(eventId: String)
case join(hostName: String, eventId: String)
case share(type: SocialBulletinItem.BulletinType.Social, event: EventJSONModel, view: UIView)
case completedShare(type: SocialBulletinPageItem.SocialButtonType)
}
У меня есть массив таких перечислений:
let array = [
.join(hostName: hostName, eventId: event.id),
.notificationPermissions,
.enableNotifications(eventId: event.id),
.share(type: .queue(position: 0, hostName: ""), event: event, view: view)
]
Я хочу создать функцию, которая может удалить конкретное перечисление из этого массива. У меня есть этот код:
func remove(
item: BulletinOption,
from options: [BulletinOption]) -> [BulletinOption] {
var options = options
if let index = options.firstIndex(where: {
if case item = $0 {
return true
}
return false
}) {
options.remove(at: index)
}
return options
}
Что я хочу сделать, это:
let options = remove(item: .enableNotifications, from: options)
Однако это дает мне две ошибки. Функция remove
сообщает:
Шаблон выражения типа «BulletinOption» не может соответствовать значениям типа «BulletinOption»
для линии:
if case item = $0
Вторая ошибка при вызове этой функции:
Элемент 'enableNotifications' ожидает аргумент типа '(eventId: String)'
Я просто хочу удалить это перечисление независимо от его аргумента. Как я могу это сделать?