做个小调查, iOS 开发本地持久化数据你是喜欢用 CoreData 还是直接 sqlite - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
请不要在回答技术问题时复制粘贴 AI 生成的内容
ldehai
V2EX    程序员

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

  •  1
     
  •   ldehai
    ldehai 2015-09-01 11:14:31 +08:00 8169 次点击
    这是一个创建于 3696 天前的主题,其中的信息可能已经有所发展或是发生改变。
    第 1 条附言    2015-09-01 20:30:11 +08:00
    汇总一下各位的回复:
    用的最多的还是 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 条回复    2016-10-25 20:29:43 +08:00
    huanglexus
        1
    huanglexus  
       2015-09-01 11:18:23 +08:00   1
    键值存储的 sqlite
    hilenlai
        2
    hilenlai  
       2015-09-01 11:18:46 +08:00   1
    喜欢用 FMDB 或 LevelDB
    ibremn
        3
    ibremn  
       2015-09-01 11:24:09 +08:00   1
    FMDB , LevelDB , Realm 。
    苹果在最新的 News.app 里都用的是 FMDB 这该怎么说好呢。。
    ldehai
        4
    ldehai  
    OP
       2015-09-01 11:24:52 +08:00
    @hilenlai @ibremn 我也是用 FMDB ,一个是要写 sql ,一个是 ORM 。但是写 sql 感觉好烦,好多表跟后台数据库差不多,总觉得在做重复的工作。
    rannie
        5
    rannie  
       2015-09-01 11:26:26 +08:00   1
    如果再做的话, FMDB 吧,感觉 CoreData 有些问题还是挺烦人的。。
    hilenlai
        6
    hilenlai  
       2015-09-01 11:34:52 +08:00   1
    @ldehai 用 FMDB 的把 JSON 存字符串,取出来就相当于 JSON 字符串了,再进行解析撒。之前也试过写 ORM ,太复杂了。 不过还是看业务把,怎么方便怎么来
    blacklee
        7
    blacklee  
       2015-09-01 11:38:37 +08:00   1
    用过一次 CoreData ,在上线之前遇到完全无法解决的问题,然后又把整个数据存储模块全部用 FMDB 重写了。
    但是看一些大厂用的还是 CoreData ,还是自己的功力不够,驾驭不了。而不是 CoreData 不好。
    ldehai
        8
    ldehai  
    OP
       2015-09-01 11:53:45 +08:00
    @hilenlai 这个方法不错,省得客户端的数据库太复杂,表操作的代码(插入、更新、查询)就要写一堆。
    不过有些数据要在客户端做统计,感觉还是用 sql 方便。所有比较纠结,没有最完美的方案。
    SeanGeek
        9
    SeanGeek  
       2015-09-01 12:52:14 +08:00   1
    FMDB
    ldp940622
        10
    ldp940622  
       2015-09-01 13:32:30 +08:00   1
    给公司做的项目用的 CoreData,之后我再也不想用它了,可能是我功力还不够..
    hyzjshwo
        11
    hyzjshwo  
       2015-09-01 13:55:02 +08:00   1
    从 CoreData 迁移到 Sqlite 了,用的 wrapper 是 FMDB 。 CoreData 坑多,但也许我没吃透,问题都能解决只是还是 Sqlite 来的直接。
    JohnShaw
        12
    JohnShaw  
       2015-09-01 14:26:05 +08:00   1
    FMDB , CoreData 根本不好用,个人在玩 Realm 。
    lawder
        13
    lawder  
       2015-09-01 14:59:57 +08:00   1
    刚接触 Realm ,感觉还不错,以后会试试它。
    chisj
        14
    chisj  
       2015-09-01 15:16:33 +08:00   1
    TMCache 。
    zenghaojim33
        15
    zenghaojim33  
       2015-09-01 15:20:58 +08:00   1
    Realm
    ldehai
        16
    ldehai  
    OP
       2015-09-01 15:34:34 +08:00
    @JohnShaw
    @lawder
    @zenghaojim33
    看了 Realm ,比 CoreData 要简单
    Dashit
        17
    Dashit  
       2015-09-01 16:04:04 +08:00   1
    好吧就我一个用 NSARCHIVE
    siroccoicode
        18
    siroccoicode  
       2015-09-01 17:04:37 +08:00   1
    看用途,比较复杂的数据结构我会去用 FMDB ,一般的数据会使用 NSUserDefault 封装出的 Key-Value 存储。
    izon90
        19
    izon90  
       2015-09-01 17:45:05 +08:00 via iPhone
    coredata 和 ream 都用过,唯独没用过 sqlite
    damngood
        20
    damngood  
       2015-09-01 17:47:37 +08:00 via iPhone
    使用 realm 不知道对 binary size 有多大影响. 有空测试一个
    damngood
        21
    damngood  
       2015-09-01 17:49:04 +08:00 via iPhone
    realm 有个缺点是暂时还不支持全文搜索
    knightlhs
        22
    knightlhs  
       2015-09-01 18:05:15 +08:00
    搞明白 CoreData 还不如直接 FMDB 来的快 太繁琐了
    iEason
        23
    iEason  
       2015-09-01 18:51:39 +08:00
    fmdb
    oimotis
        24
    oimotis  
       2015-09-01 19:08:07 +08:00 via iPhone
    FMDB
    mazingyu
        25
    mazingyu  
       2015-09-01 19:40:27 +08:00
    Realm
    2015813
        26
    2015813  
       2015-09-01 22:50:19 +08:00 via Android
    从优秀案例来看,都是用 sqlite 做出来的居多。供楼主参考。
    Obelly
        27
    Obelly  
       2015-09-01 22:50:41 +08:00
    realm 的问题是线程安全问题,一不留神就掉坑里。
    zsk425
        28
    zsk425  
       2015-09-02 15:38:06 +08:00
    我在项目中用的是 Core Data , MagicalRecord 大大简化了操作,另外页面刷新主要依赖 NSFetchedResultsController 。没有使用过 Realm ,准备去了解一下。
    ibremn
        29
    ibremn  
       2015-09-20 15:35:55 +08:00
    #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
       2015-09-21 10:45:12 +08:00
    @ibremn 是的,我在摸索使用的时候发现 id 不能自增,用起来挺费事的。
    fhefh
        31
    fhefh  
       2016-02-26 16:17:55 +08:00
    mark~
    vimffs
        32
    vimffs  
       2016-10-24 13:16:53 +08:00
    realm-core 上个月开源了,怎么看? https://github.com/realm/realm-core
    ldehai
        33
    ldehai  
    OP
       2016-10-24 19:33:18 +08:00
    @vimffs 新写的 app 用到了 realm-swift 版本,还行,就是增加字段还得迁移数据,有点麻烦
    finalshot
        34
    finalshot  
       2016-10-25 17:33:13 +08:00
    @ldehai Swift 3.0 吗?动态库还是源码引入?
    ldehai
        35
    ldehai  
    OP
       2016-10-25 20:29:43 +08:00
    @finalshot 用的 2.3 , pod
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     2969 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 30ms UTC 00:20 PVG 08:20 LAX 17:20 JFK 20:20
    Do have faith in what you're doing.
    ubao snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86