В настоящее время я портирую приложение iOS с Objective- C на Swift. Делая это, я просто наткнулся на проблему, с которой я борюсь.
У меня есть переменная («значение»), которая может ставить на AnyObject ?, особенно это может быть тип String, Array, Dictionary и Set. Теперь в моем предыдущем коде я тестировал свою переменную «value» для типа ее значения, чтобы продолжить работу с ним:
id value = [myDatahandler getValue];
if (([value isKindOfClass:[NSSet class]] || [value isKindOfClass:[NSArray class]]) && [value count] > 0) {
// do something
}
Попытка сделать то же самое в Swift, похоже, не работает ...
var value: AnyObject? = myDatahandler.getValue()
if (value is Set || value is Array) && value!.count > 0 {
// Error:
// Generic parameter 'Element' could not be inferred in cast to 'Array'
// Generic parameter 'Element' could not be inferred in cast to 'Set'
}
После нескольких часов поиска правильного способа сделать это, но не найдя ничего полезного, я надеюсь, что сообщество может прийти мне на помощь здесь ...
Любые предложения, как это может работать?