您当前的位置: 首页 > 

ObjectMapper与CoreData结合使用在类初始化时出现访问违例的分析和解决

发布时间:2018-10-20 16:49:56 ,浏览量:0

ObjectMapper是一个便捷的Swift类和JSON互转的库,它为iOS实体模型多提供了一种实现方法.

它可以和CoreData配合完成一些有趣的功能.

但在使用过程中在感受到便捷的同时也发现了一些问题,记录下来供自己和大家参考.

CoreData托管某类实例变量如下:

@NSManaged public var date: Date
    @NSManaged public var remark: String?
    @NSManaged public var resultString: String
    @NSManaged public var habit: Habit?

在其扩展中实现Mappable协议:

public func mapping(map: Map) {
    date <- (map["traceDate"],DateTransform())
    remark <- map["remark"]
    resultString <- map["resultString"]
    habit <- (map["habit"],Transforms.transformForHabit)
}

需要说明的是,除了一些常见的类型(比如Int,String等),需要在映射时设置合适的转换器.如上所示,对于Date和Habit?类型,分别使用了内置的和我自定义的转换器.

如果不设置,ObjectMapper转换也不会出错,它只是不转换该实例变量而已…

对于自定义转换器的编写也很简单,但超出了本博的主旨,所以有机会单开一个系列再表(先挖坑,填不填另说…)

就这个例子,在托管类初始化时App崩溃了,提示访问违例:

let longHabit = model.allHabits.filter {$0.title.hasPrefix(
关注
打赏
1688896170
查看更多评论

暂无认证

  • 0浏览

    0关注

    107766博文

    0收益

  • 0浏览

    0点赞

    0打赏

    0留言

私信
关注
热门博文
立即登录/注册

微信扫码登录

0.1977s