V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
iOS 开发实用技术导航
NSHipster 中文版
http://nshipster.cn/
cocos2d 开源 2D 游戏引擎
http://www.cocos2d-iphone.org/
CocoaPods
http://cocoapods.org/
Google Analytics for Mobile 统计解决方案
http://code.google.com/mobile/analytics/
WWDC
https://developer.apple.com/wwdc/
Design Guides and Resources
https://developer.apple.com/design/
Transcripts of WWDC sessions
http://asciiwwdc.com
Cocoa with Love
http://cocoawithlove.com/
Cocoa Dev Central
http://cocoadevcentral.com/
NSHipster
http://nshipster.com/
Style Guides
Google Objective-C Style Guide
NYTimes Objective-C Style Guide
Useful Tools and Services
Charles Web Debugging Proxy
Smore
zioc
V2EX  ›  iDev

iOS 用 Dictionary 接收数据而不用实体类的弊端

  •  
  •   zioc · 2015-03-27 15:13:04 +08:00 · 4191 次点击
    这是一个创建于 3564 天前的主题,其中的信息可能已经有所发展或是发生改变。

    以前在C#开发中,全部都用实体类,但不太灵活。

    在iOS开发中,用Dictionary接收数据,感觉很灵活,但感觉是不是不规范?

    那么在iOS开发中 什么时候用Dictionary?什么时候用实体类?

    13 条回复    2015-04-06 23:56:18 +08:00
    chisj
        1
    chisj  
       2015-03-27 15:27:01 +08:00
    建议都用实体类。更好维护,也更看得懂。
    yellowV2ex
        2
    yellowV2ex  
       2015-03-27 15:31:50 +08:00
    写个总类,可以把这些个dictionary转成实体顺便检查格式丢error出来
    zioc
        3
    zioc  
    OP
       2015-03-27 15:33:56 +08:00
    @yellowV2ex 额,不明白具体操作办法
    newtonisaac
        4
    newtonisaac  
       2015-03-27 15:57:07 +08:00
    搜索下 ios mantle
    vincentxue
        5
    vincentxue  
       2015-03-27 16:33:35 +08:00
    如果是用 JSON 交互,那么上服务器的一个对象,会包装为字典传给你,然后你就要把这个字典映射为自己的实体对象。

    字典只是作为中介传输使用,你模型类公开的属性或变量不应该有字典类型,因为你总是应该把它映射为实体才对。

    建议看看 Instagram 的 API,写得相当优秀。

    贴一个我前段时间写的一个小项目的一个模型类。仅供参考。

    https://gist.github.com/VincentSit/fd64cd721c0e366b3f04
    https://gist.github.com/VincentSit/66e7261779a8d24d2795

    这个类里的代码涉及到的第三方库:
    AFNetworking - 网络请求
    MagicalRecord - Core Data 封装
    Motis - 模型映射
    alsotang
        6
    alsotang  
       2015-03-27 17:03:13 +08:00
    @livid 楼上的文本框溢出了
    knightlhs
        7
    knightlhs  
       2015-03-27 17:04:48 +08:00
    如果是 JSON 交互 可以考虑 JsonModel 自动映射
    vincentxue
        8
    vincentxue  
       2015-03-27 17:32:40 +08:00
    @alsotang 这个情况普遍存在。
    afon
        9
    afon  
       2015-03-27 22:54:19 +08:00
    学习学习
    vixvix
        10
    vixvix  
       2015-03-27 23:09:59 +08:00
    还是用实体比较容易维护。实体里面处理从dictionary到object的serialization,和object到json的deserialization.
    simman
        11
    simman  
       2015-03-28 00:14:46 +08:00
    我接过一个别人写的项目,里面全是用字典,没有注释,没有文档,简直要疯掉啊。
    tigerZhang
        12
    tigerZhang  
       2015-03-31 15:08:13 +08:00
    https://github.com/CoderMJLee/MJExtension
    妈妈在也不用担心模型和字典之间的转换了。
    sherblue
        13
    sherblue  
       2015-04-06 23:56:18 +08:00
    可以用JSONModel
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   923 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 23ms · UTC 21:40 · PVG 05:40 · LAX 13:40 · JFK 16:40
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.