如何在 Objective-C 中使用 Swift 非 NSObject 子类

Lor*_*Huz 0 objective-c ios swift swift2

我在 Objective-C 项目中使用 Swift 时遇到了一些问题。

例如,我使用以下库(https://github.com/Hearst-DD/ObjectMapper)。我已经尝试在我的子类之前添加 @objc 指令,但据说只有从 NSObject 继承的类才能声明为 @objc。似乎它只与 Swift 2.0 有关

所以我的问题是,如何在我的 Objective-C 项目中使用纯 swift 类或库?如果还有可能...

我的模型如下所示: import Foundation import ObjectMapper

class SSStreetAddressRequest: Mappable {

    var street:String?
    var city:String?
    var state:String?
    var zip:String?

    required init?(_ map: Map){

    }

    func mapping(map: Map) {
        street  <- map["street"]
        city    <- map["city"]
        state   <- map["state"]
        zip     <- map["zip"]
    }
}
Run Code Online (Sandbox Code Playgroud)

Mappable 是一个协议:https : //github.com/Hearst-DD/ObjectMapper/blob/master/ObjectMapper/Core/Mapper.swift

Bjö*_* Ro 5

在 Objective-C 中,你不能创建没有超类的类。这就是为什么@objc 至少在没有 NSObject 的情况下将无法工作的原因。

所以你必须至少使用 NSObject。那就是我会怎么做

@objc class SSStreetAddressRequest: NSObject {
    var street:String?
    var city:String?
    var state:String?
    var zip:String?
}

extension SSStreetAddressRequest : Mappable {
    required init?(_ map: Map){

    }

    @objc func mapping(map: Map) {
        street  <- map["street"]
        city    <- map["city"]
        state   <- map["state"]
        zip     <- map["zip"]
    }
}
Run Code Online (Sandbox Code Playgroud)

  • “在 Objective-C 中,没有超类就无法创建类。” 这不是真的。在 Objective-C 中,您*可以*创建一个没有超类的类。 (2认同)