#swift #macos #swift3
#быстрый #macos #swift3
Вопрос:
Я новичок в Swift, и я не могу понять, как я могу получить доступ по индексу к переменной типа [AnyHashable : Any]
Чтобы быть более конкретным, я хочу получить доступ allHeaderFields
к переменной HTTPURLResponse
экземпляра с помощью индекса. Я ожидал, что сработает что-то вроде следующего, но это не сработало:
httpResponse.allHeaderFields[0]
Ответ №1:
В Swift 3 [AnyHashable: Any]
это просто тип словаря по умолчанию, импортированный из NSDictionary
. Вы можете получить доступ к его содержимому, как к обычному словарю:
if let contentType = httpResponse.allHeaderFields["Content-Type"] as? String {
print(contentType)
}
Или:
for (key, value) in httpResponse.allHeaderFields {
print(key, value)
}
Комментарии:
1. Я пытаюсь отобразить все заголовки в NSTableView. Метод, который нужно переопределить для отображения столбца, предоставляет мне номер строки. Я не могу знать имена заголовков априори.
2. @LazarusLazaridis, вы можете легко преобразовать словарь Swift в массив, используя
map
.let headerArray = httpResponse.allHeaderFields.map{$0}
. Или вы можете создать свой собственный массив, изменив мой второй фрагмент кода.3. Это то, что я делаю в данный момент, я хотел убедиться, что я не делаю это неправильно, потому что я как 2 дня новичок в swift ;). Спасибо за помощь.
4. @LazarusLazaridis, в некоторых случаях (кто-то говорит, что «некоторые» должны быть «многими»), Swift не дает нам супер-простого способа. Удачи вам и вашему приложению.