`

是否该用 Core Data?

    博客分类:
  • ios
 
阅读更多

Core Data 是 Cocoa 里面一套非常受欢迎的框架,从 Mac OS X 10.4 提供以来,在 10.5 中引入了完善的 schema 迁移机制,再到 iPhone OS 3.0 时被引入 Cocoa Touch,这套完善的框架都被认为是管理大量结构化数据所首选的 Cocoa 框架,尤其是因为使用 Core Data 能大大减少需要手工编写的代码量,就使它更受开发者欢迎了。

不过最近却出现了一些不同的声音,先是传出消息说 Aperture 3.0 抛弃了 Core Data,改为直接操作 SQLite 数据库 (大家联想到 Apple Mail 3.0 也是直接用 SQLite,没有用 Core Data),但因为都是 Apple 内部的决定,大家只能凭空猜测理由;接下来,NetNewsWire 的开发者 Brent Simmons 也说在NetNewsWire for iPhone 里从 Core Data 转向用 FMDB 来操作 SQLite 数据库 (FMDB 是 Gus Mueller 编写的一层很薄的 SQLite 在 Objective-C 下的封装),Brent 给的理由就很充分了:他要做的很多操作都是对数据批量进行的,其实不需要把所有数据都保存在内存里遍历执行,那样更慢,直接交给数据库,往往一条语句就搞定了,简洁而且快速。

然后 Jonathan ‘Wolf’ Rentzsch 也对此深表赞同,并推荐 Aaron Hillegass的 BNRPersistence 框架,这个框架用 Tokyo Cabinet 提供了一个类似 Core Data 接口的数据持久化方案,最大的优点是比 Core Data 快得多,根据 Aaron 自己的测试,常见的操作都要快 10 ~ 20 倍。其实快这么多也可以理解,毕竟 BNRPersistence 要比 Core Data 轻量得多,支持的功能也少很多,加上 Tokyo Cabinet 这样的 Key-value 数据库在处理适合它的操作时,多数要比 SQLite 这样的关系型数据库要快。

所以突然 Core Data 就有点被墙倒众人推的意思,好像以前大家都知道它不好用,但都不好意思说,直到突然有经验足够丰富的开发者开头,就一涌而上开始骂了。我个人的观感是 Core Data 作为官方方案,给开发提供的许多便利还是不可小视的,但考虑学起来确实也不容易 (所以才有人专门写本书讲 Core Data),所以新上手的 Cocoa 程序员不妨先考虑一下 BNRPersistence, FMDB 这样的方案。

那是否 Core Data 就该被抛弃呢?目前的争议其实有点像 Web 开发里到底该不该用 ORM,区别是大多数 Web 开发者因为历史原因,对直接进行数据库操作有偏好 (或者说,本能地反感 ORM),而多数 Cocoa 开发者则坚定支持用对象操作数据,所以长远来看,数据持久化方案在 Cocoa (Touch) 开发里少不了,唯一的疑问是 Apple 会不会继续改进 Core Data 的性能和接口,以拉近与第三方方案的差距,只要 Apple 还在不断改进,Core Data 就有学习的必要。

我个人对 Core Data 的怨念主要是在要写的“胶水代码”上:有的时候为了方便与界面的 bindings 操作,不得不给 Model 写大量重复的胶水代码,所以如果第三方的方案如果在这方面有简化,我很乐意改用。

转载:http://blog.jjgod.org/2010/02/28/core-data-or-not/

分享到:
评论

相关推荐

    Core Data by Tutorials v4.0 (Swift 4)

    《Core Data by Tutorials v4.0 (Swift 4)》是针对苹果开发平台的一款深入讲解Core Data技术的教程,特别适用于使用Swift 4编程语言的开发者。Core Data是Apple提供的一项强大的数据管理框架,它简化了应用程序的...

    Pro Core Data for IOS

    本书《Pro Core Data for iOS》以完全更新的形式针对Xcode 4.2版本,涵盖了iOS SDK 5环境下Core Data框架的使用方法。Core Data是苹果公司推出的数据存储和检索技术,它对于开发者来说易于上手,但深入掌握却颇具...

    Core Data by Tutorials v4.0 Source Code (Swift4)

    这份教程旨在帮助开发者深入理解和有效地使用Core Data进行数据存储和检索。 Core Data的核心概念包括: 1. **实体(Entities)**:代表应用程序中的数据模型对象,类似于数据库中的表。你可以定义实体的属性和...

    ABAP Core Data Services .pdf

    ### ABAP Core Data Services (CDS):SAP最新技术详解 #### 一、引言 随着企业数据处理需求的不断增长以及业务复杂性的提升,SAP推出了一种全新的技术——ABAP Core Data Services(简称CDS),旨在帮助开发者更...

    Core Data objc中国(最新版已对应Swift4)花钱买的包含pdf,mobi,epub格式

    《Core Data》是一本专注于Apple开发框架Core Data的专业书籍,主要针对iOS开发人员,特别是那些使用Swift 4语言进行开发的开发者。Core Data是Apple提供的一种数据管理框架,它简化了应用程序的数据持久化过程,...

    Core Data: Updated for Swift 3

    ### Core Data: 更新至 Swift 3 ...通过以上章节的详细介绍,读者可以系统地掌握Core Data的基础知识、工作原理、并发与同步技术以及高级查询技巧,从而能够更加熟练地使用Swift 3进行iOS应用开发。

    Core.Data.in.Swift.Data.Storage.and.Management.for.iOS.and.OSX

    Core Data is intricate, powerful, and necessary. Discover the powerful capabilities integrated into Core Data, and how to use Core Data in your iOS and OS X projects. All examples are current for OS X...

    Core Data in Objective-C Data Storage and Management for iOS and OS X(3rd)

    首席开发人员)指出,本书不仅涵盖了Core Data的基础知识,还详细讲解了如何高效使用该框架,并提供了丰富的示例和解释。 #### 主要章节概述 1. **基础知识**:介绍Core Data的基本概念,包括模型设计、实体与属性...

    Core Data by Tutorials

    《Core Data by Tutorials》是一本专注于教授iOS开发者如何使用苹果公司的Core Data框架的教程书籍,它详尽地介绍了从基础到高级的Core Data技能。这本书特别为iOS 8和Xcode环境编写,提供了系统性地从零开始构建...

    Core Data objc

    Core Data objc Core Data objc Core Data objc Core Data objc Core Data objc

    Core Data - Florian Kugler Daniel Eggert

    - **Core Data与并发**:探讨了如何在多线程环境中使用Core Data。 - **Core Data堆栈**:介绍了不同场景下如何配置不同的Core Data堆栈。 - **多上下文的问题**:讨论了在使用多个上下文时可能出现的一些常见问题,...

    Core.Data.Updated.for.Swift.3

    本书《Core.Data.Updated.for.Swift.3》是关于学习使用Swift 3进行Core Data开发的指导书。Core Data是苹果公司提供的一个框架,用于管理应用程序数据模型对象的生命周期,它简化了数据持久化过程。在本书的介绍中,...

    EdgeX core data microservice

    The deep dive internal logic of core data in edgex foundry platform.

    Core Data 示例源码 操作xml归档

    Core Data是苹果开发框架中的一个重要组成部分,主要用于管理应用程序的数据模型。这个“Core Data 示例源码 操作xml归档”是一个示例项目,旨在演示如何在OS X平台上利用Core Data框架来处理XML档案。通过这个教程...

    core data程序代码

    在这个"core data程序代码"的示例中,我们很可能会看到一个简单的iOS应用,它演示了如何使用Core Data来执行这些基本的数据管理任务。 首先,Core Data的核心概念包括实体(Entity)、属性(Attribute)、关系...

    Core Data数据验证

    在iOS应用开发中,Core Data是苹果提供的一种强大的数据持久化框架,用于管理应用程序的数据模型。数据验证是确保数据质量的重要环节,特别是在用户输入数据时,防止无效或不合法的数据进入数据库。本节将深入探讨...

    Core Data 数据自动封装

    能够十分方便地为 Core Data 数据自动封装CRUD(创建,读取,更新和删除)操作。并且指定排序的域,可以自动为Core Data 数据加上按照这个域的排序操作。 Demo的演示了CRUD操作以及索引排序操作,比如自动为小编...

    Mastering Core Data With Swift mobi

    Mastering Core Data With Swift 英文mobi 本资源转载自网络,如有侵权,请联系上传者或csdn删除 本资源转载自网络,如有侵权,请联系上传者或csdn删除

Global site tag (gtag.js) - Google Analytics