2013-10-15 105 views
0

我已经使用RestKit 0.21.0组件的iOS项目负责获取,解析和存储在远程服务器的核心数据响应。在后端JSON响应我有类似的东西:映射时间与RestKit

"response": [ 
    { 
    "id": 1, 
    "start_time": "10:00:00", 
    "end_time": "14:00:00", 
    "name": "Object name" 
    }, 
    . 
    . 
    . 
] 

Model.xcdatamodeld我定义实体领域startTime和日期的结束时间类型。通常,所有映射对对象的JSON响应都能正常工作,但JSON字段start_time和end_time有问题。

你有什么建议如何正确地将时间字段映射到可存储在核心数据(SQLite数据库)中的数据?

回答

1

用适当的格式创建一个NSDateFormatter来解析你的时间字符串。添加日期格式化程序[[RKValueTransformer defaultValueTransformer] insertValueTransformer:dateFormatter atIndex:0];。现在,RestKit将搜索所有定义的日期格式化程序以及默认的日期格式化程序,只要它需要映射到NSDate目标。

+0

Wain,谢谢你的提示。我已经添加了dateFormatter,但现在我得到了奇怪的结果。例如,字符串'12:00:00'作为-24866870400存储在数据库中,在NSLog中显示为1213-01-01 00:00:00 +0000。所以这不是我所期望的。 – Grzegorz

+0

你使用什么格式? '-24866870400'很怪异... – Wain

+0

我知道。在我已经将Model.xcdatamodeld中提交的实体定义为Date,它在SQLite数据库模式中作为列TIMESTAMP可见。 – Grzegorz

1

已经继承了一个正在广泛使用RestKit的应用程序,现在它的版本是0.21,它的功能非常强大。需要在YYYY-MM-DD HH:MM:SS.SSS中添加日期以进行字符串转换,并遵循上面的建议将所需日期格式化程序添加到索引0中的默认化合物格式化程序。但是,如果发现对RKObjectMapping的调用覆盖了此操作,则需要添加ISO8601格式化程序位于索引0处,以在+(void)初始化中向后兼容。评论这些线,我得到正确的结果。我想这可能是应用程序结构的方式,有任何数量的RKObjectMapping调用,并且不可能在没有对RKObjectMapping进行更改的情况下将日期格式化程序添加到正确的位置。