Ios 无法将领域与对象映射器swift 3.0一起使用
我正在使用带有对象映射器的领域进行JSON解析。当我创建一个同时使用对象映射器和领域的模型类时,我得到了编译错误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?
错误:必须调用超类“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是的,我正在对问题集进行子类化