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

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(
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
ObjectMapper是一个非常流行的Java库,用于将Java对象转换为JSON格式,以及将JSON格式转换为Java对象。下面是一个使用ObjectMapper的示例代码: ``` import com.fasterxml.jackson.databind.ObjectMapper; public class Example { public static void main(String[] args) { // Create an instance of ObjectMapper ObjectMapper objectMapper = new ObjectMapper(); // Convert a Java object to JSON MyObject myObject = new MyObject("John", 30); try { String json = objectMapper.writeValueAsString(myObject); System.out.println(json); } catch (JsonProcessingException e) { e.printStackTrace(); } // Convert JSON to a Java object String json = "{\"name\":\"John\",\"age\":30}"; try { MyObject myObject = objectMapper.readValue(json, MyObject.class); System.out.println(myObject.getName()); System.out.println(myObject.getAge()); } catch (JsonProcessingException e) { e.printStackTrace(); } } } class MyObject { private String name; private int age; public MyObject() {} public MyObject(String name, int age) { this.name = name; this.age = age; } public String getName() { return name; } public void setName(String name) { this.name = name; } public int getAge() { return age; } public void setAge(int age) { this.age = age; } } ``` 在上面的示例中,我们首先创建了一个ObjectMapper实例。然后,我们将一个Java对象转换为JSON字符串,使用writeValueAsString()方法。接着,我们将JSON字符串转换为Java对象,使用readValue()方法。注意,我们需要传入要转换的Java对象的型。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

大熊猫侯佩

赏点钱让我买杯可乐好吗 ;)

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值