В инфраструктуре сети Какао, как я могу элегантно извлечь номер порта из случая NWEndpoint.hostPort? - PullRequest
0 голосов
/ 04 марта 2020

Вместо того, чтобы вручную связывать мой сокет с портом, я бы хотел, чтобы моя программа выбрала открытый порт, запустил соединение для отправки, затем получил номер порта и 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))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...