• 请不要在回答技术问题时复制粘贴 AI 生成的内容
ldehai
V2EX  ›  程序员

做个小调查, iOS 开发本地持久化数据你是喜欢用 CoreData 还是直接 sqlite

  •  1
     
  •   ldehai ·
    ldehai · Sep 1, 2015 · 8579 views
    This topic created in 3906 days ago, the information mentioned may be changed or developed.
    Supplement 1  ·  Sep 1, 2015
    汇总一下各位的回复:
    用的最多的还是 FMDB ;有部分兄弟已经采用或正准备采用 realm 。

    FMDB is a Cocoa / Objective-C wrapper around SQLite ( https://github.com/ccgus/fmdb )
    Realm is not an ORM on top of SQLite. Instead it uses its own persistence engine, built for simplicity (& speed )( https://realm.io/).
    35 replies    2016-10-25 20:29:43 +08:00
    huanglexus
        1
    huanglexus  
       Sep 1, 2015   ❤️ 1
    键值存储的 sqlite
    hilenlai
        2
    hilenlai  
       Sep 1, 2015   ❤️ 1
    喜欢用 FMDB 或 LevelDB
    ibremn
        3
    ibremn  
       Sep 1, 2015   ❤️ 1
    FMDB , LevelDB , Realm 。
    苹果在最新的 News.app 里都用的是 FMDB 这该怎么说好呢。。
    ldehai
        4
    ldehai  
    OP
       Sep 1, 2015
    @hilenlai @ibremn 我也是用 FMDB ,一个是要写 sql ,一个是 ORM 。但是写 sql 感觉好烦,好多表跟后台数据库差不多,总觉得在做重复的工作。
    rannie
        5
    rannie  
       Sep 1, 2015   ❤️ 1
    如果再做的话, FMDB 吧,感觉 CoreData 有些问题还是挺烦人的。。
    hilenlai
        6
    hilenlai  
       Sep 1, 2015   ❤️ 1
    @ldehai 用 FMDB 的把 JSON 存字符串,取出来就相当于 JSON 字符串了,再进行解析撒。之前也试过写 ORM ,太复杂了。 不过还是看业务把,怎么方便怎么来
    blacklee
        7
    blacklee  
       Sep 1, 2015   ❤️ 1
    用过一次 CoreData ,在上线之前遇到完全无法解决的问题,然后又把整个数据存储模块全部用 FMDB 重写了。
    但是看一些大厂用的还是 CoreData ,还是自己的功力不够,驾驭不了。而不是 CoreData 不好。
    ldehai
        8
    ldehai  
    OP
       Sep 1, 2015
    @hilenlai 这个方法不错,省得客户端的数据库太复杂,表操作的代码(插入、更新、查询)就要写一堆。
    不过有些数据要在客户端做统计,感觉还是用 sql 方便。所有比较纠结,没有最完美的方案。
    SeanGeek
        9
    SeanGeek  
       Sep 1, 2015   ❤️ 1
    FMDB
    ldp940622
        10
    ldp940622  
       Sep 1, 2015   ❤️ 1
    给公司做的项目用的 CoreData,之后我再也不想用它了,可能是我功力还不够..
    hyzjshwo
        11
    hyzjshwo  
       Sep 1, 2015   ❤️ 1
    从 CoreData 迁移到 Sqlite 了,用的 wrapper 是 FMDB 。 CoreData 坑多,但也许我没吃透,问题都能解决只是还是 Sqlite 来的直接。
    JohnShaw
        12
    JohnShaw  
       Sep 1, 2015   ❤️ 1
    FMDB , CoreData 根本不好用,个人在玩 Realm 。
    lawder
        13
    lawder  
       Sep 1, 2015   ❤️ 1
    刚接触 Realm ,感觉还不错,以后会试试它。
    chisj
        14
    chisj  
       Sep 1, 2015   ❤️ 1
    TMCache 。
    zenghaojim33
        15
    zenghaojim33  
       Sep 1, 2015   ❤️ 1
    Realm
    ldehai
        16
    ldehai  
    OP
       Sep 1, 2015
    @JohnShaw
    @lawder
    @zenghaojim33
    看了 Realm ,比 CoreData 要简单
    PhanKiap
        17
    PhanKiap  
       Sep 1, 2015   ❤️ 1
    好吧就我一个用 NSARCHIVE
    siroccoicode
        18
    siroccoicode  
       Sep 1, 2015   ❤️ 1
    看用途,比较复杂的数据结构我会去用 FMDB ,一般的数据会使用 NSUserDefault 封装出的 Key-Value 存储。
    izon90
        19
    izon90  
       Sep 1, 2015 via iPhone
    coredata 和 ream 都用过,唯独没用过 sqlite
    damngood
        20
    damngood  
       Sep 1, 2015 via iPhone
    使用 realm 不知道对 binary size 有多大影响. 有空测试一个
    damngood
        21
    damngood  
       Sep 1, 2015 via iPhone
    realm 有个缺点是暂时还不支持全文搜索
    knightlhs
        22
    knightlhs  
       Sep 1, 2015
    搞明白 CoreData 还不如直接 FMDB 来的快 太繁琐了
    iEason
        23
    iEason  
       Sep 1, 2015
    fmdb
    oimotis
        24
    oimotis  
       Sep 1, 2015 via iPhone
    FMDB
    mazingyu
        25
    mazingyu  
       Sep 1, 2015
    Realm
    2015813
        26
    2015813  
       Sep 1, 2015 via Android
    从优秀案例来看,都是用 sqlite 做出来的居多。供楼主参考。
    Obelly
        27
    Obelly  
       Sep 1, 2015
    realm 的问题是线程安全问题,一不留神就掉坑里。
    zsk425
        28
    zsk425  
       Sep 2, 2015
    我在项目中用的是 Core Data , MagicalRecord 大大简化了操作,另外页面刷新主要依赖 NSFetchedResultsController 。没有使用过 Realm ,准备去了解一下。
    ibremn
        29
    ibremn  
       Sep 20, 2015
    #3 楼的时候,我提到了 Realm ,但是之前并没有在生产环境用过。。
    最近仔细调研了一下 Realm ,强烈不推荐使用:
    1. Realm 的核心是叫做 realm-core ,是一个 C++ 写的 binary 库,并不开源,而且有计划未来要收费。
    2. iOS 自带的 SQLite 版本比较旧,官网最新的 SQLite 相对于系统自带的库性能提升了非常多,我拿 Realm 提供的性能测试工程在真机上测试, Realm 在读写性能上都要差于 SQLite/FMDB 。
    3. Realm 目前还不够稳定,并且有很多坑,比如不支持 NULL 字段, id 不能自增等等。
    ldehai
        30
    ldehai  
    OP
       Sep 21, 2015
    @ibremn 是的,我在摸索使用的时候发现 id 不能自增,用起来挺费事的。
    fhefh
        31
    fhefh  
       Feb 26, 2016
    mark~
    vimffs
        32
    vimffs  
       Oct 24, 2016
    realm-core 上个月开源了,怎么看? https://github.com/realm/realm-core
    ldehai
        33
    ldehai  
    OP
       Oct 24, 2016
    @vimffs 新写的 app 用到了 realm-swift 版本,还行,就是增加字段还得迁移数据,有点麻烦
    finalshot
        34
    finalshot  
       Oct 25, 2016
    @ldehai Swift 3.0 吗?动态库还是源码引入?
    ldehai
        35
    ldehai  
    OP
       Oct 25, 2016
    @finalshot 用的 2.3 , pod
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   5749 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 110ms · UTC 01:43 · PVG 09:43 · LAX 18:43 · JFK 21:43
    ♥ Do have faith in what you're doing.