Пользователь может иметь несколько пользовательских опций для моего приложения:
enum OptionAvailable : String {
case NOTE_GENDER = "note_gender"
case NOTE_AGEMIN = "note_agemin"
case NOTE_AGEMAX = "note_agemax"
case NOTE_ORGA = "note_orga"
case NOTE_DMAX = "note_dmax"
}
И каждая опция связана с типом.Чтобы установить связь, я сделал этот массив:
static let typeForOption:[OptionAvailable:AnyClass] = [
.NOTE_GENDER : MemberOptions.OptGenderToGrade.self, (ERROR)
.NOTE_AGEMAX : Int.self,
.NOTE_AGEMIN : Int.self,
.NOTE_ORGA : MemberOptions.GradeFrom.self,
.NOTE_DMAX : Int.self
]
Затем, когда пользователь установит параметр в меню параметров, мое приложение запустит запрос к моему API, вызвав функцию:
static func ApiSetOption(
opt:MemberOptions.OptionAvailable,
val:Any,
completionHandler:(()->Void)? = nil,
errorHandler:((Int,String)->Void)? = nil) throws
{
// this is in pseudo code, just to see whats going on :
if val is not of type typeForOption[opt] {
throw WrongTypeError
}
if typeForOption[opt] is not convertible to String {
throw TypeNotStringifiable
}
URLRequest(.POST, "mydomain.com/set/option/\(opt.rawValue)",
withBody:val )
}
Проблема: я получаю сообщение об ошибке от Swift в (ОШИБКА): Невозможно преобразовать значение типа 'MemberOptions.OptGenderToGrade.Type' в ожидаемый тип значения словаря 'AnyObject.Type'
Вот класс MemberOptions.OptGenderToGrade:
enum OptGenderToGrade : String {
case MALE = "male"
case FEMALE = "female"
case BOTH = "both"
}