Swift+Realm1.0.1+Alamofire(一)
Q:使用realm继承的object不能实现归档解档?
required init?(coder aDecoder: NSCoder) {
self.init()
self.name = aDecoder.decodeObjectForKey("name") as! String
self.updated = aDecoder.decodeObjectForKey("updated") as! NSDate
}
【Swift+Realm1.0.1+Alamofire(一)】当实现上面的方法的时候xcode会强制性的向你提出还需要实现其他几个
init
方法,对,这没错,但是当你实现了required init(realm: RLMRealm, schema: RLMObjectSchema) {
fatalError("init(realm:schema:) has not been implemented")
}required init(realm: RLMRealm, schema: RLMObjectSchema) {
fatalError("init(realm:schema:) has not been implemented")
}required init() {
fatalError("init() has not been implemented")
}
上面这三个方法之后,然后run,就会crash了。
解决办法:去掉你自己自定义的init方法,使用
convenience
来定义你的init方法上面的解决方法是:在
required
前面添加convenience
,不知道convenience
是干什么的同学,自己去补充swift基础知识convenience required init?(coder aDecoder: NSCoder) {
self.init()
self.name = aDecoder.decodeObjectForKey("name") as! String
self.updated = aDecoder.decodeObjectForKey("updated") as! NSDate
}
举一反三:继承了realm的Object对象之后,我们不需要再自己定义新的init()方法了,但是我们可以使用convenience创建一个便利构造器,来方便的根据我们的需求定义创建init()方法,这也是工厂模式的好处。
关于realm的更多坑
推荐阅读
- 一个人的旅行,三亚
- 一个小故事,我的思考。
- 《真与假的困惑》???|《真与假的困惑》??? ——致良知是一种伟大的力量
- 开学第一天(下)
- 一个人的碎碎念
- 2018年11月19日|2018年11月19日 星期一 亲子日记第144篇
- 遇到一哭二闹三打滚的孩子,怎么办┃山伯教育
- 第326天
- Y房东的后半生14
- 奔向你的城市