Если вы ищете что-то вроде проверки, существует ли значение или нет, с помощью свойства isEmpty
обоих String
и [String]
, на более высоком уровне вы можете создать протокол отдельно для этого. Но для этого сценария я бы не рекомендовал это.
protocol EmptyIdentifiable {
var isEmpty: Bool { get }
}
extension String: EmptyIdentifiable { }
extension Array: EmptyIdentifiable where Element == String { }
var dictionary = [String: EmptyIdentifiable]()
dictionary["string"] = "value"
dictionary["array"] = ["values1", "values2"]
print(dictionary["string"]?.isEmpty)
print(dictionary["array"]?.isEmpty)
Нормальным решением в данной текущей ситуации было бы использование кастинга от Any
до String
или [String]
.
if let array = dictionary["array"] as? [String] {
print(array, array.isEmpty)
}
if let string = dictionary["string"] as? String {
print(string, string.isEmpty)
}