Вместо того, чтобы вручную связывать мой сокет с портом, я бы хотел, чтобы моя программа выбрала открытый порт, запустил соединение для отправки, затем получил номер порта и IP-адрес, отправленный с помощью NWConnection.currentPath?.localEndpoint
, который возвращает 192.168.1.X:YYYYY
, который является типом Optional<NWEndpoint>
. Я хотел бы прослушать порт YYYYY
для ответа, но я не могу извлечь эти данные отдельно.
NWEndpoint
- это перечисление, а .hostPort
- это случай как hostPort(host: NWEndpoint.Host, port: NWEndpoint.Port)
. Справочник по документации не показывает никаких функций получения.
Я могу преобразовать его в строку и изолировать порт оттуда, но есть ли более элегантный способ извлечь номер порта отдельно?
Редактировать:
Решение можно найти здесь https://forums.swift.org/t/how-can-i-extract-only-the-port-number-from-an-nwendpoint-hostport-case/34291/2
Соответствующее значение может быть извлечено с использованием регистра переключателя, например:
enum testEnum {
case integer(Int)
case string(String)
case float(Float)
case array([Int])
case multiValue(value1: String, value2: String)
}
func testEnumSwitcher(Enumerator enumerator: testEnum) -> String {
switch enumerator {
case .integer(let input):
return "Integer is \(input)"
case .string(let input):
return "String is \"\(input)\""
case .float(let input):
return "Float is \(input)"
case.array(let input):
return "Array is \(input)"
case .multiValue(let input1, let input2):
return "value1 is \(input1), and value2 is \(input2)"
}
}
enumerator = .multiValue(value1: "Apple", value2: "Banana")
print(testEnumSwitcher(Enumerator: enumerator))