使用core data的经验分享?

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

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

----------------------
@allenhsu 这句"Core Data 很赞" 估计也被coredata摧残过吧
明显的言不由衷啊 :)
iYu
2013-04-04 20:24:41 +08:00
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
2013-04-04 21:00:41 +08:00
@iYu 所以你认为core data 不太好用是么
iYu
2013-04-04 21:06:27 +08:00
我沒有這樣說過啊。 只是Core Data需要投入時間去搞定。 而且根據你的項目具體需求來看。
allenhsu
2013-04-04 21:32:03 +08:00
@wtl 我觉得比较赞的主要是 Core Data 里 Faulting 机制(Lazy Load),用 sqlite 要自己实现这套机制的话会比较麻烦。

Hi,@iYu
iYu
2013-04-04 21:47:38 +08:00
@allenhsu 好基友 无处不在啊。
hilenlai
2013-04-04 22:22:46 +08:00
coredata 啊,就是能直接存对象的。仅此而已,语法有点蛋疼~~用了下还阔以!
vixvix
2013-04-05 02:11:28 +08:00
如果是小型应用的话sqlite. 如果一定上coredate的话,建议用这个wrapper: MagicalRecord
https://github.com/magicalpanda/MagicalRecord
chisj
2013-04-05 10:23:13 +08:00
http://blog.csdn.net/jasonblog,清晰易懂,我是从那里学会的。
一个阿里的iOS工程师写的,好像很年轻,感觉是个潜力股。
PrideChung
2013-04-05 18:32:01 +08:00
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
2013-04-16 15:44:42 +08:00
为啥都觉得 Core Data 很蛋疼,我用得挺好的,跟 Apple 的其他东西结合不错(废话)

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

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

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

库就用了一个 SSDataKit,节省好多废话。
franksin
2013-06-27 21:28:58 +08:00
专门来回复下,core data如果看明白文档,的确是比写sql高效而且与tableviewcontroller配合真的可以把纯手写sql拉开几条街。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/64947

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX