Вызов метода target c с перечислением в качестве аргумента в swift - PullRequest
0 голосов
/ 24 августа 2018

Я пытаюсь использовать объективный метод c с перечислением в качестве аргумента в swift. Значение для аргумента устанавливается на основе переменной перечисления swift.

Перечисление Swift

enum SecurityType: Int {

    case pushNotification = 0
    case touchId = 1
    case faceId = 2
}

Myenum в файле target c выглядит следующим образом:

typedef NS_ENUM(NSUInteger, ScreenType) {
TouchID = 1,
FaceID = 2,
ConsentApproval = 3,
VerifyMyIdentity = 4 };

Мой быстрый код -

let screenType: ScreenType = self.biometricType == .touchId ? .touchID : .faceID

guard let newVC = MyViewController.init(screenType: screenType) else { return }

В указанном выше методе biometricType переменная имеет быстрый тип перечисления.

Вот мой метод инициализации

- (instancetype) initWithScreenType: (screenType *) type {

self = [super init];

  if (self) {
     UIStoryboard *passcodeStoryBoard = [UIStoryboard  storyboardWithName:passcode bundle:nil];
     self = [passcodeStoryBoard  instantiateViewControllerWithIdentifier:@"AuthenticationViewController"];
     self.screenType = type;
     return self;
  }

return nil;}

Я получаю сообщение об ошибке в методе init

Невозможно преобразовать значение типа 'EnumType' в ожидаемый тип аргумента 'UnsafeMutablePointer!'

CanУ кого-то есть идеи, что может быть причиной этого.

1 Ответ

0 голосов
/ 24 августа 2018

Во-первых, тип self.biometricType равен UnsafeMutablePointer. Вы не можете установить UnsafeMutablePointer type на enum ScreenType.

Во-вторых, вы должны использовать полное имя перечисления, чтобы получить доступ к перечислению obj-c, как в этом примере.

let screenType: ScreenType = ScreenType.TouchId
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...