• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    公众号

ios - RestKit .20.x 值(value)转换

[复制链接]
菜鸟教程小白 发表于 2022-12-12 20:50:14 | 显示全部楼层 |阅读模式 打印 上一主题 下一主题

我是 iOS 开发新手,正在尝试在 RestKit 中进行一些自定义值转换,但我不知道该怎么做。我目前有两个问题:

  1. 我有一个 base64 编码的图像,它以 JSON 消息从服务器返回。它采用以下格式。我使用 Core Data 作为后端持久存储,并且“图像”字段作为二进制数据 (NSData) 存储在 Core Data 中。当 RestKit 将 base64 编码的图像转换为 NSData 对象时,出现了问题,因为存储在 sqllite 数据库中的图像字节不正确,我无法重新显示图像。

    "images": [{
     "id": 1,
     "recordId": 1,
     "status": "C",
     "type": "MUGSHOT",
     "format": "JPEG",
     "width": 50,
     "height": 50,
     "image": "/9j/4AAQSkZJRgABAQEBLAEsAA....",
     "createBy": "blah",
     "createDt": 1395683191483,
     "captureDevice": null
    }]
    
  2. 自纪元以来的 createBy 日期以 ms 为单位,它没有被正确地转换为 NSDate 对象。我知道它期望值以秒为单位,我假设是什么导致了问题。

经过多次谷歌搜索,我发现 RKValueTransformer 将允许我为不同的类设置自定义转换(在我的情况下,我想为 NSDate 和 NSData 类设置自定义转换器。但是,RKBlockValueTransformer 类是在“自定义值转换”部分下引用的此处 (https://github.com/RestKit/RestKit/wiki/Object-Mapping) 对我来说似乎不存在。我正在使用 RestKit .20.3 并使用 CocoaPods 使用此 Podfile 安装它:

    platform :ios, '7.0'
    pod 'RestKit', '~> 0.20.3'

我尝试将 pod 'RKValueTransformers', '~> 1.0.0' 添加到我的 Podfile 中,但这会导致一些编译器问题。另外,不是RKValueTransformers project吗?只是 RestKit 中已经内置的值(value)转换功能的一部分?

使用 RKValueTransformer 获取我正在寻找的 NSDate 和 NSData 行为,我是否走在正确的道路上?如果是这样,我该怎么做才能将其包含在我的项目中?有没有更简单的方法可以让我的应用程序正确处理以二进制字段形式存储在 Core Data 中的 base64 编码图像?

编辑:这是我的 Pods 项目中的 RKValueTransformers.h 和 .m 文件。它似乎仅与日期格式化程序相关:RKValueTransformers



Best Answer-推荐答案


如果您在 Core Data 中存储图像数据,您应该考虑勾选“允许外部存储”选项。

您想要的值转换器是将 NSString 转换为 NSData 并且您需要在中间使用base64。您需要创建一个符合< RKValueTransforming > 的类。因为您是从 NSString 进行转换,所以您应该实现 validateTransformationFromClass:toClass: 以便您可以拒绝任何目标不是 NSData 有效的转换。

一旦你创建了你的类并在它的实例中(imageFormatter),安装它:

[[RKValueTransformer defaultValueTransformer] insertValueTransformer:imageFormatter atIndex:0];

同样的过程也适用于日期格式化程序。

关于ios - RestKit .20.x 值(value)转换,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22619827/

回复

使用道具 举报

懒得打字嘛,点击右侧快捷回复 【右侧内容,后台自定义】
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关注0

粉丝2

帖子830918

发布主题
阅读排行 更多
广告位

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap