#ios #swift #enums
#iOS #swift #перечисления
Вопрос:
Я использую перечисление приведенных ниже статических значений как repeatInterval
для UILocalNotification
. Можно ли сделать это динамическим?
// RepeatInterval
enum RepeatInterval : String, CustomStringConvertible {
case Never = "Never"
case EveryMinute = "Every Minute"
case EveryHour = "Every Hour"
case EveryDay = "Every Day"
case EveryWeek = "Every Week"
case EveryMonth = "Every Month"
case EveryYear = "Every Year"
var description : String { return rawValue }
static let allValues = [Never, EveryMinute, EveryHour, EveryDay, EveryWeek, EveryMonth, EveryYear]
}
Комментарии:
1. Что вы имеете в виду
made dynamic
?2. @user28434. Я хочу, чтобы он был настроен на основе пользовательских настроек. Удалить, если сочтете ненужным, и добавить снова, если это возможно.
3. вы хотите добавлять обращения динамически?
4. @IgEnio, да…
5. @Shyam, тебе следует подумать об использовании
Set<String>
then или что-то в этом роде.
Ответ №1:
Вы можете создать перечисление со всеми возможными параметрами, которые вы сделали, и создать функцию, которая фильтрует массив allValues на основе выбора пользователя
// RepeatInterval
enum RepeatInterval : String, CustomStringConvertible {
case Never = "Never"
case EveryMinute = "Every Minute"
case EveryHour = "Every Hour"
case EveryDay = "Every Day"
case EveryWeek = "Every Week"
case EveryMonth = "Every Month"
case EveryYear = "Every Year"
var description : String { return rawValue }
static let allValues = [Never, EveryMinute, EveryHour, EveryDay, EveryWeek, EveryMonth, EveryYear]
}
//filterArray function to remove unwanted enum values
func filterArray(interval: [RepeatInterval]) -> [RepeatInterval] {
let filteredArray = RepeatInterval.allValues.filter { !interval.contains($0)}
return filteredArray
}
//Usage
let r = filterArray([.Never, .EveryMinute, .EveryDay])
//prints [Every Hour, Every Week, Every Month, Every Year]
Комментарии:
1. Спасибо. Отдельно отметим, можно ли будет добавить какие-либо новые обращения?
2. Добавление отдельного cased невозможно, возможно, вам придется подумать об альтернативном решении.. пожалуйста, поддержите ответ, если он решил вашу проблему.
3. О, хорошо. Спасибо за предложение. Хотя это имеет смысл, в моем случае это неприменимо. Еще раз спасибо @suhit..