Я использую KVC для создания унифицированного интерфейса для нужд приложения. Например, одна из моих функций получает объект, который подвергается нескольким проверкам, основанным исключительно на словаре строковых ключей.Как проверить, является ли объект коллекцией? (Swift)
Таким образом, мне нужен способ проверить, является ли объект ключом типа коллекции.
Я ожидал, что смогли сделать некоторые проверки протоколов (например, IEnumerable в C#, чтобы проверить, если это можно перечислить), но это не сработало:
if let refCollection = kvcEntity.value(forKey: refListLocalKey) as? AnySequence<CKEntity> { ... }
Я попытался AnyCollection тоже.
Я знаю, что я мог бы перебирать все основные типы коллекций, просто введя:
if let a = b as? Set { ...} // (or: if a is Set {...})
if let a = b as? Array { ...}
if let a = b as? Dictionary { ...}
Но это, кажется, не собственно от наследования/полиморфизма точки зрения.
Вы попробовали это http://stackoverflow.com/questions/39536742/in-swift-how-do-i-check-if-an-object-is-a-collection-of-any-type –
Возможно дубликат [Использование isKindOfClass с Swift] (http://stackoverflow.com/questions/24019707/using-iskindofclass-with-swift) –
Я использовал поиск перед публикацией. Начиная с isKindOfClass, он подразумевает итерацию по жестко кодированным типам. Я бы хотел, чтобы надлежащая проверка протокола или что-то в этом роде. – Hexfire