美文网首页RealmiOS-swift
Swift+Realm1.0.1+Alamofire(一)

Swift+Realm1.0.1+Alamofire(一)

作者: 童星 | 来源:发表于2016-07-05 13:07 被阅读117次

Q:使用realm继承的object不能实现归档解档?

required init?(coder aDecoder: NSCoder) {
        self.init()
        self.name = aDecoder.decodeObjectForKey("name") as! String
        self.updated = aDecoder.decodeObjectForKey("updated") as! NSDate
    }

当实现上面的方法的时候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的更多坑

相关文章

  • Swift+Realm1.0.1+Alamofire(一)

    Q:使用realm继承的object不能实现归档解档? 当实现上面的方法的时候xcode会强制性的向你提出还需要实...

  • Swift+Realm1.0.1+Alamofire(二)

    Q:怎么交换或者移动realm数据库里面的两条记录? 需求:我要移动cell或者交换cell上的两条数据模型,下次...

  • 。一一,一,一,一。

    一,、

  • 一 一

    2018年6月22日 星期五 雨 一水一万物 一星一宇宙 一字一文章 一书一世界 一读一微笑 一赞一知音

  • 一 一

    杨德昌《一 一》,早年曾看过一遍。 婷婷短发,白净,蓝色衬衫,学生裙,黑皮鞋,白袜子,学习很好的中学女生。温柔,懂...

  • 一 一

    给自己无处安放的灵魂找到了家!简书,我的新写作时光!继续,在流年里拾荒,禅落一身的光!

  • 一.一

  • 一.一

    一节车厢,一只行囊,肯为当时一念疯狂。 一根点燃,一缕惆怅,不许未来一片迷茫。 一眼远看,一众不详,哪知各位一去何...

  • 一(一)

    我叫一,总有人喜欢在背后说我,因为很多时候我都是自己一个人。很多人都说我很孤单,看起来很可怜,但我觉得很奇怪,他们...

  • (一-一)

    白天不看书晚上开灯照亮全宿舍的sb们该睡了

网友评论

    本文标题:Swift+Realm1.0.1+Alamofire(一)

    本文链接:https://www.haomeiwen.com/subject/jnphjttx.html