Realm create() 无法将 JSON 字符串解析为 NSDate?

Posted

技术标签:

【中文标题】Realm create() 无法将 JSON 字符串解析为 NSDate?【英文标题】:Realm create() cannot parse JSON string to NSDate? 【发布时间】:2016-01-13 04:42:59 【问题描述】:

我目前正在关注本教程here

Realm 似乎可以自动将 JSON 数据映射到对象。但是,它似乎不能很好地与 NSDate 属性配合使用。

我的 JSON 字符串如下所示:


...
"created_at":"2015-12-08T11:59:45.315539Z"
...

我对@9​​87654323@的定义:

dynamic var created_at = NSDate()

映射和创建发生在这里:

   ...
   let data = response.result.value as! [[String: NSObject]]
   try! realm.write
       for item in data
        realm.create(MyModel.self, value: item, update:true)
    
   

这是我得到的错误:

*** Terminating app due to uncaught exception 'RLMException', reason: 'Invalid value '2015-12-08T11:59:45.315539Z' for property 'created_at''

这是否意味着我需要为 NSDate 手动映射它?

【问题讨论】:

不,目前无法实现,您需要将其保存为字符串。 【参考方案1】:

没错。您不能将包含日期的 String 自动映射到 Realm 中的 NSDate 属性。

解决此问题的最简单方法是将 JSON 数据反序列化为可变字典,然后手动将特定的 String 属性替换为从 NSDateFormatter 对象生成的 NSDate 值。完成后,您应该能够简单地将字典传递给 Realm 以在其中创建新的 Object

这之前在 Realm GitHub 问题中讨论过:https://github.com/realm/realm-cocoa/issues/605

【讨论】:

以上是关于Realm create() 无法将 JSON 字符串解析为 NSDate?的主要内容,如果未能解决你的问题,请参考以下文章

多个Realm对象为JSON

将 Json 数据数组添加到 Realm

java 使用GSON将Realm对象序列化为JSON

如何在 Swift 中将 JSON 写入 Realm

理解 Realm、Moya 和 ObjectMapper

复合键问题 Realm Swift