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:
Вопрос: Каков правильный синтаксис доступа:
- функции класса и структуры Swift,
- Swift var / let?
2 ответа
Вы заявили
public func sayHello() {
print(text)
}
Это делает метод
sayHello
public через модуль, но не предоставляет Objective-C. Вместо:
@objc public func sayHello() {
print(text)
}
Я не добавлял квалификатор @objc к функции Swift.
Я ошибочно подумал, что в этом нет необходимости, поскольку я являюсь членом класса NSObject для каждого объявления класса.
Кроме того, не нужно было добавлять файл моста .h ObjC <--> Swift.