Swift - неверная метка аргумента при вызове с помощью bindToPort

Я пытаюсь использовать библиотеку CocoaAsyncSocket со Swift.

Я хотел бы реализовать UDP-сервер и клиент. Я импортировал библиотеку, и вот одна из моих реализаций методов:

func setupConnection(){
    var error : NSError?
    socket = GCDAsyncUdpSocket(delegate: self, delegateQueue: dispatch_get_main_queue())

    do {
        try socket.bindToPort(PORT, error: &error)
        try socket?.connectToHost(IP, onPort: PORT)
        try socket.beginReceiving()
    } catch _ {
        print(error)
    }
    send("ping")
}

К сожалению, я получил эту ошибку на bindToPort:

Неверная метка аргумента в вызове (есть ':error:', ожидается ':interface:')

Глядя на объявление метода bindToPort в библиотеке, у меня есть прототип, соответствующий моей реализации.

- (BOOL)bindToPort:(UInt16)port error:(NSError **)errPtr

Почему я все еще получаю эту ошибку, даже если прототип соблюдается?


person Jojo56400    schedule 01.06.2016    source источник


Ответы (1)


Функции Objective-C динамически адаптируются для использования парадигмы обработки ошибок Swift, которая throws вместо использования NSError параметра.

Если последний неблочный параметр метода Objective-C имеет тип NSError **, Swift заменяет его ключевым словом throws, чтобы указать, что метод может выдать ошибку. Если параметр error метода Objective-C также является его первым параметром, Swift пытается еще больше упростить имя метода, удаляя суффикс «WithError» или «AndReturnError», если он присутствует, из первой части селектора. Если с результирующим селектором объявлен другой метод, имя метода не изменяется. - Использование Swift с Cocoa и Objective-C (Swift 2.2) — обработка ошибок

person Alexander    schedule 01.06.2016
comment
Ok! Я удалил параметр ошибки, и он работает! Спасибо! - person Jojo56400; 01.06.2016
comment
Если это решит ваш вопрос, пожалуйста, проголосуйте и примите :) - person Alexander; 01.06.2016
comment
Я принял ответ, но, к сожалению, у меня недостаточно репутации, чтобы проголосовать за него. - person Jojo56400; 01.06.2016