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
notedit
V2EX  ›  iDev

使用core data的经验分享?

  •  
  •   notedit ·
    notedit · 2013-04-04 18:27:39 +08:00 · 4670 次点击
    这是一个创建于 4012 天前的主题,其中的信息可能已经有所发展或是发生改变。
    想在现在做的一个项目中加入core data的使用, 但对这个东西不是很了解, 使用过core data的同学可以分享下经验么? 或者一些相关的辅助的类库
    16 条回复    1970-01-01 08:00:00 +08:00
    kukat
        1
    kukat  
       2013-04-04 18:31:58 +08:00   ❤️ 1
    WWDC 2012 Session 214: Core Data Best Practices
    Cwind
        2
    Cwind  
       2013-04-04 18:33:20 +08:00   ❤️ 1
    http://www.raywenderlich.com/tutorials 里面有几节讲这个的
    allenhsu
        3
    allenhsu  
       2013-04-04 19:25:10 +08:00   ❤️ 1
    Core Data 很赞,但是已经不止一个朋友在项目的后续版本迁移到 sqlite 了,相对来说自由度更高,移植也更方便。
    alexrezit
        4
    alexrezit  
       2013-04-04 19:45:14 +08:00   ❤️ 1
    @allenhsu
    表示一直在用 SQLite. Core Data 太复杂了没学会.
    wtl
        5
    wtl  
       2013-04-04 19:53:44 +08:00   ❤️ 1
    用作缓存数据还行 不过也不建议自己捣鼓 用已有的第三方库吧

    但是如果想在一开始就放点数据进去 那太痛苦了 有折腾的功夫程序都写好了 得不偿失

    ----------------------
    @allenhsu 这句"Core Data 很赞" 估计也被coredata摧残过吧
    明显的言不由衷啊 :)
    iYu
        6
    iYu  
       2013-04-04 20:24:41 +08:00   ❤️ 1
    Core Data啊。 使用Core Data的下一步就是想用iCloud。 iCloud最近都被黑出翔了。頂級開發商無數土嘈的。 希望iOS7能有重大突破。 有兩個庫是不應該錯過的 一個是 https://github.com/magicalpanda/MagicalRecord 另外一個是 https://github.com/rentzsch/mogenerator

    然後 自己也小小的總結過一點筆記

    ## Core Data
    [iOS笔记18](http://iiiyu.com/2013/03/29/learning-ios-notes-eighteen/) Core Data 一

    [iOS笔记19](http://iiiyu.com/2013/04/01/learning-ios-notes-nineteen/) Core Data 二

    [iOS笔记15](http://iiiyu.com/2013/02/22/learning-ios-notes-fifteen/) Mogenerator的初级使用

    希望有所幫助
    notedit
        7
    notedit  
    OP
       2013-04-04 21:00:41 +08:00
    @iYu 所以你认为core data 不太好用是么
    iYu
        8
    iYu  
       2013-04-04 21:06:27 +08:00
    我沒有這樣說過啊。 只是Core Data需要投入時間去搞定。 而且根據你的項目具體需求來看。
    allenhsu
        9
    allenhsu  
       2013-04-04 21:32:03 +08:00
    @wtl 我觉得比较赞的主要是 Core Data 里 Faulting 机制(Lazy Load),用 sqlite 要自己实现这套机制的话会比较麻烦。

    Hi,@iYu
    iYu
        10
    iYu  
       2013-04-04 21:47:38 +08:00
    @allenhsu 好基友 无处不在啊。
    hilenlai
        11
    hilenlai  
       2013-04-04 22:22:46 +08:00   ❤️ 1
    coredata 啊,就是能直接存对象的。仅此而已,语法有点蛋疼~~用了下还阔以!
    vixvix
        12
    vixvix  
       2013-04-05 02:11:28 +08:00   ❤️ 1
    如果是小型应用的话sqlite. 如果一定上coredate的话,建议用这个wrapper: MagicalRecord
    https://github.com/magicalpanda/MagicalRecord
    chisj
        13
    chisj  
       2013-04-05 10:23:13 +08:00   ❤️ 1
    http://blog.csdn.net/jasonblog,清晰易懂,我是从那里学会的。
    一个阿里的iOS工程师写的,好像很年轻,感觉是个潜力股。
    PrideChung
        14
    PrideChung  
       2013-04-05 18:32:01 +08:00   ❤️ 1
    CoreData的学习曲线的确非常陡,另一方面很多程序猿都有Web开发的背景,SQL应该都是了解或者熟悉的,自然会觉得用SQLite会更加方便。我自己用CoreData主要是冲着他的ObjectModel 和 RelationShip 去的,如果自己用SQLite来实现的话需要花不少功夫。

    CoreData比较麻烦的一点是多线程,你需要在每个线程各使用一个MOC,然后在某个MOC更新了之后再通过一些烦到爆的手段来更新其他线程的MOC,官方一个比较旧的ThreadedCoreData demo 是用几个跟MOC有关的 NSNotification 来合并不同MOC的更新,需要写大量无聊的代码。我的建议是如果能确定操作的数据量不大的话,直接在MainQueue上进行CoreData的操作。

    至于MagicalRecord这个库,谨慎使用。虽然有很多很cool的功能,比原生CoreData易用很多,还能帮你处理头疼的多线程问题,但是文档不是十分完备,API经常变,网上找到的教程不少都过时了,做好出了问题要去看框架源码的准备,如果你对CoreData一无所知的话,MagicalRecord只会让你更加糊涂。
    leafduo
        15
    leafduo  
       2013-04-16 15:44:42 +08:00   ❤️ 1
    为啥都觉得 Core Data 很蛋疼,我用得挺好的,跟 Apple 的其他东西结合不错(废话)

    多线程网上有很多讨论了,我没遇到明显的性能问题,所以就都在主线程做的。

    Mogenerator 没用明白,不少功能似乎也不全,现在基本改 model 之后手动去改一下 .h,反正也没多少东西。

    sqlite 要自己序列化、处理关系什么的吧,多麻烦……Core Data 直接塞对象就好了。

    库就用了一个 SSDataKit,节省好多废话。
    franksin
        16
    franksin  
       2013-06-27 21:28:58 +08:00
    专门来回复下,core data如果看明白文档,的确是比写sql高效而且与tableviewcontroller配合真的可以把纯手写sql拉开几条街。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   2557 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 28ms · UTC 15:42 · PVG 23:42 · LAX 08:42 · JFK 11:42
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.