无法将属性标记为@objc,因为其类型无法在Objective-C中表示

Cok*_*kes 4 tuples objective-c swift

我正在完成一个用Swift编写的项目的移植,以支持Objective-C。编写了很多项目来支持Objective-C,但不支持特定类的属性。

这是属性:

open var remainingTime: ( hours: Int, minutes: Int, seconds: Int)?
Run Code Online (Sandbox Code Playgroud)

我猜我不能仅仅添加@objc它,因为“小时”,“分钟”,“秒”是对象。如何使此属性对我的Objective-C项目可见?

Iva*_*nin 7

您可以创建一个代表元组的类。

码:

class Time: NSObject {
    let hours: Int
    let minutes: Int
    let seconds: Int

    init(hours: Int, minutes: Int, seconds: Int) {
        self.hours = hours
        self.minutes = minutes
        self.seconds = seconds
    }
}

@objc open var remainingTime: Time?
Run Code Online (Sandbox Code Playgroud)

  • 最好添加`@ objcMembers`来创建一个需要从Objective-C代码访问的类。 (3认同)