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

时间:2015-10-07 16:24:11

标签: ios objective-c swift swift2

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

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

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

我的模特看起来像这样:     进口基金会     导入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"]
    }
}

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

1 个答案:

答案 0 :(得分:3)

在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"]
    }
}