Objective-C доступ к функциям пакета Swift

Цель: использовать Swift Package в Objective-C.
Все, что я пытаюсь сделать, это получить простое, элементарное понимание правильного синтаксиса доступа к Swift vars и func () из ObjC.

Это вторая часть вопросов об использовании Objective-C с пакетом Swift .

Вот мой файл пакета Swift, к которому я пытаюсь получить доступ ...
Я концентрируюсь на доступе к классу Swift .
Но я также хотел бы знать, как получить доступ к структуре .

      import Foundation

public struct RicStruct {
    public private(set) var text = "Hello, World!"

    public init() {
    }
    
    public func sayHello() -> String {
        "Hello Ric!"
    }
}

public class RicClass: NSObject {
    @objc public var msg = "Mother has a feeling, I might be too appealing."
    @objc public let text = "Hello Everybody!"
    
    public override init() {}
    
    public func sayHello() {
            print(text)
        }
    
    public func doSomething() {
        print("Inside doSomething()")
    }
}

Это родитель Objective-C, пытающийся получить доступ к переменным и функциям Swift-Package:

Вопрос: Каков правильный синтаксис доступа:

  1. функции класса и структуры Swift,
  2. Swift var / let?

2 ответа

Решение

Вы заявили

      public func sayHello() {
    print(text)
}

Это делает метод sayHellopublic через модуль, но не предоставляет Objective-C. Вместо:

      @objc public func sayHello() {
    print(text)
}

Я не добавлял квалификатор @objc к функции Swift.
Я ошибочно подумал, что в этом нет необходимости, поскольку я являюсь членом класса NSObject для каждого объявления класса.

Кроме того, не нужно было добавлять файл моста .h ObjC <--> Swift.

Другие вопросы по тегам