Ios 无法将领域与对象映射器swift 3.0一起使用

Ios 无法将领域与对象映射器swift 3.0一起使用,ios,swift3,realm,objectmapper,Ios,Swift3,Realm,Objectmapper,我正在使用带有对象映射器的领域进行JSON解析。当我创建一个同时使用对象映射器和领域的模型类时,我得到了编译错误 错误:必须调用超类“QuestionSet”的指定初始值设定项。 import ObjectMapper import RealmSwift class QuestionSet: Object, Mappable { //MARK:- Properties dynamic var id:Int = 0 dynamic var title:String?

我正在使用带有对象映射器的领域进行JSON解析。当我创建一个同时使用对象映射器和领域的模型类时,我得到了编译错误

错误:必须调用超类“QuestionSet”的指定初始值设定项。

import ObjectMapper
import RealmSwift

class QuestionSet: Object, Mappable {

    //MARK:- Properties
    dynamic var id:Int = 0
    dynamic var title:String?
    dynamic var shortTitle:String?
    dynamic var desc:String?
    dynamic var isOriginalExam:Bool = false
    dynamic var isMCQ:Bool = false
    dynamic var url:String?

    //Impl. of Mappable protocol
    required convenience init?(map: Map) {
        self.init()
    }

    //mapping the json keys with properties
    public func mapping(map: Map) {
        id          <- map["id"]
        title       <- map["title"]
        shortTitle  <- map["short_title"]
        desc        <- map["description"]
        isMCQ   <- map["mc"]
        url     <- map["url"]
        isOriginalExam <- map["original_pruefung"]
    }
}
错误:必须调用超类“QuestionSet”的指定初始值设定项。

import ObjectMapper
import RealmSwift

class QuestionSet: Object, Mappable {

    //MARK:- Properties
    dynamic var id:Int = 0
    dynamic var title:String?
    dynamic var shortTitle:String?
    dynamic var desc:String?
    dynamic var isOriginalExam:Bool = false
    dynamic var isMCQ:Bool = false
    dynamic var url:String?

    //Impl. of Mappable protocol
    required convenience init?(map: Map) {
        self.init()
    }

    //mapping the json keys with properties
    public func mapping(map: Map) {
        id          <- map["id"]
        title       <- map["title"]
        shortTitle  <- map["short_title"]
        desc        <- map["description"]
        isMCQ   <- map["mc"]
        url     <- map["url"]
        isOriginalExam <- map["original_pruefung"]
    }
}
案例2:

 //Impl. of Mappable protocol
 required convenience init?(map: Map) {
    super.init()
}
QuestionSet的便利初始值设定项必须委托(使用'self.init'),而不是链接到超类初始值设定项(使用'super.init')

案例3:

//Impl. of Mappable protocol
 required convenience init?(map: Map) {
    super.init()
    self.init()
}
错误1:必须调用超类“QuestionSet”的指定初始值设定项。

import ObjectMapper
import RealmSwift

class QuestionSet: Object, Mappable {

    //MARK:- Properties
    dynamic var id:Int = 0
    dynamic var title:String?
    dynamic var shortTitle:String?
    dynamic var desc:String?
    dynamic var isOriginalExam:Bool = false
    dynamic var isMCQ:Bool = false
    dynamic var url:String?

    //Impl. of Mappable protocol
    required convenience init?(map: Map) {
        self.init()
    }

    //mapping the json keys with properties
    public func mapping(map: Map) {
        id          <- map["id"]
        title       <- map["title"]
        shortTitle  <- map["short_title"]
        desc        <- map["description"]
        isMCQ   <- map["mc"]
        url     <- map["url"]
        isOriginalExam <- map["original_pruefung"]
    }
}
初始值设定项不能同时委托('self.init')和链接到超类初始值设定项('super.init')

问题集的便利初始值设定项必须委托(使用'self.init'),而不是链接到超类初始值设定项(使用'super.init')

我使用以下模式:

我有一个
BaseObject
,我的所有领域对象都从中继承

open class BaseObject: Object, StaticMappable {

    public class func objectForMapping(map: Map) -> BaseMappable? {
        return self.init()
    }

    public func mapping(map: Map) {
        //for subclasses
    }
 }
那么你的班级会是这样的:

import ObjectMapper
import RealmSwift

class QuestionSet: BaseObject {

    //MARK:- Properties
    dynamic var id:Int = 0
    dynamic var title:String?
    dynamic var shortTitle:String?
    dynamic var desc:String?
    dynamic var isOriginalExam:Bool = false
    dynamic var isMCQ:Bool = false
    dynamic var url:String?

    //mapping the json keys with properties
    public func mapping(map: Map) {
        id          <- map["id"]
        title       <- map["title"]
        shortTitle  <- map["short_title"]
        desc        <- map["description"]
        isMCQ   <- map["mc"]
        url     <- map["url"]
        isOriginalExam <- map["original_pruefung"]
    }
}
导入对象映射器
导入RealmSwift
类问题集:BaseObject{
//标记:-属性
动态变量id:Int=0
动态变量标题:字符串?
动态变量短标题:字符串?
动态变量描述:字符串?
动态var等原始检查:Bool=false
动态变量isMCQ:Bool=false
动态变量url:字符串?
//用属性映射json键
公共函数映射(映射:映射){

id您需要一个默认构造函数或任何您的语言(Swift)调用的构造函数。@EpicPandaForce如果我使用默认的init()方法,那么我就必须实现对象的其余init方法。我不想实现。所以这里使用的是便利init()…我不确定。忽略我,Swift不是我的强项:D“超类‘问题集’”,您正在创建从问题集继承的子类?@YunCHEN是的,我正在对问题集进行子类化