![](https://csdnimg.cn/release/download_crawler_static/10709931/bg10.jpg)
Dealing with a change to your application’s schema can be difficult, in terms of both development effort
and runtime resources. Core Data’s schema migration tools simplify the task of coping with schema
changes, and in some cases allow you to perform extremely efficient in-place schema migration.
■ Optional integration with the application’s controller layer to support user interface synchronization.
Core Data provides the NSFetchedResultsController object on iOS, and integrates with Cocoa
Bindings on Mac OS X.
Why Should You Use Core Data?
There are a number of reasons why it may be appropriate for you to use Core Data. One of the simplest
metrics is that, with Core Data, the amount of code you write to support the model layer of your application
is typically 50% to 70% smaller as measured by lines of code. This is primarily due to the features listed
above—the features Core Data provides are features you don’t have to implement yourself. Moreover they’re
features you don’t have to test yourself, and in particular you don’t have to optimize yourself.
Core Data has a mature code base whose quality is maintained through unit tests, and is used daily by millions
of customers in a wide variety of applications. The framework has been highly optimized over several releases.
It takes advantage of information provided in the model and runtime features not typically employed in
application-level code. Moreover, in addition to providing excellent security and error-handling, it offers best
memory scalability of any competing solution. Put another way: you could spend a long time carefully crafting
your own solution optimized for a particular problem domain, and not gain any performance advantage
over what Core Data offers for free for any application.
In addition to the benefits of the framework itself, Core Data integrates well with the Mac OS X tool chain.
The model design tools allow you to create your schema graphically, quickly and easily. You can use templates
in the Instruments application to measure Core Data’s performance, and to debug various problems. On
Mac OS X desktop, Core Data also integrates with Interface Builder to allow you to create user interfaces
from your model. These aspects help to further shorten your application design, implementation, and
debugging cycles.
What Core Data Is Not
Having given an overview of what Core Data is and does, and why it may be useful, it is also useful to correct
some common misperceptions and state what it is not.
■ Core Data is not a relational database or a relational database management system (RDBMS).
Core Data provides an infrastructure for change management and for saving objects to and retrieving
them from storage. It can use SQLite as one of its persistent store types. It is not, though, in and of itself
a database. (To emphasize this point: you could for example use just an in-memory store in your
application. You could use Core Data for change tracking and management, but never actually save any
data in a file.)
■ Core Data is not a silver bullet.
It does not remove the need to write code. Although it is possible to create a sophisticated application
solely using the Xcode data modeling tool and Interface Builder, for more real-world applications you
will still have to write code.
16
Why Should You Use Core Data?
2009-11-17 | © 2004, 2009 Apple Inc. All Rights Reserved.
Technology Overview