NSString ** в качестве параметра быстрой функции - PullRequest
1 голос
/ 13 апреля 2020

Я реализовывал плагин MacOS Services и наткнулся на взаимодействие Swift / Obj C, которое мне не удалось решить. В Obj C подпись для вызова метода Service выглядит следующим образом:

- (void) translateService:(NSPasteboard *)pboard userData:(NSString *)userData error:(NSString **)error

Я могу создать и работать с эквивалентом Swift, но я не знаю, что с этим делать (NSString * *) ошибка. Я пробовал AutoreleasingUnsafeMutablePointer<NSString?>?, но я получаю жалобу от компилятора: «Невозможно присвоить значению:« error »- это« let »константа», когда я пытался присвоить NSString параметру ошибки. Вот что у меня есть (что, я уверен, не правильно)

   @objc func translateService( _  pboard:  NSPasteboard, userData: String,  error: AutoreleasingUnsafeMutablePointer <NSString?>?)  {

    if let types = pboard.types {

        if !types.contains(NSPasteboard.PasteboardType.string) {
            //TODO: Error
            error = NSString("Does not contain String data")
            return
        }

Как ты имеешь c эту функциональность в Swift? Как вы возвращаете строку ошибки в этом параметре?

1 Ответ

2 голосов
/ 13 апреля 2020

Я думаю, я мог бы найти ответ. Пожалуйста, поправьте меня, если я ошибаюсь.

@objc func translateService( _  pboard:  NSPasteboard, userData: String,  error: AutoreleasingUnsafeMutablePointer<NSString?>?)  {

    if let types = pboard.types {            
        if !types.contains(NSPasteboard.PasteboardType.string) {

            error?.pointee = NSString("Does not contain String data")
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...