Неправильный формат вашей строки выбора.Строка выбора для NSSelectorFromString
должна выглядеть как подпись Objective-C.
Попробуйте:
let selector = NSSelectorFromString("testWithValue:value2:")
, а ваш func
должен быть помечен @objc
или ваш class
должен быть помечен @objcMembers
.
Как получить строку селектора:
Примечание: предпочтительный способсоздать селектор в Swift - значит использовать #selector
, как описано @DavidBerry в его ответе , потому что он дает вам проверку селектора во время компиляции.
Если вам все еще нужно NSSelectorFromString
тогда вот как узнать строку:
После добавления @objc
к вашей функции и компиляции проекта, нажмите на значок Related Items в Xcode в левом верхнем углу окнаОкно ViewController.swift
и выберите Генерируемый интерфейс -> <ProjectName>-Swift.h
.Там вы найдете интерфейс Objective-C вашего func
:
- (void)testWithValue:(NSInteger)value value2:(NSInteger)value2;
, а затем объедините части, оканчивающиеся двоеточиями, для создания строки селектора: "testWithValue:value2:"