Core Data初体验-创建一个最简单的core data应用
运行环境 Xcode5
一.Core Data的栈结构
在AppDelegate.h里有这样三个属性
@property (readonly, strong, nonatomic) NSManagedObjectContext *managedObjectContext; @property (readonly, strong, nonatomic) NSManagedObjectModel *managedObjectModel; @property (readonly, strong, nonatomic) NSPersistentStoreCoordinator *persistentStoreCoordinator;
一个core data栈有以下各类组成:一个或者多个连接到唯一的一个persistent store coordinator的managed object contexts,而这个唯一的persistent store coordinator有连接到一个或多个persistent stores。这样的一个栈包含了存取,操作managed objects的core data元素

NSManagedObjectContext 是管理存储的上下文,其save方法就能存储数据
NSManagedObjectModel用来存储entity的property,property包括Attributes,Relationships,Fetched properties
而每个entity都对应一个Persistent Object Store
二:初窥core data的data model
打开后缀名为xcdatamodeld的文件,有两种显示模式
第一种模式为图形:

另一种则是表:

//xcdatamodeld的文件在编译后会以momd的格式存在
- (NSManagedObjectModel *)managedObjectModel
{
if (_managedObjectModel != nil) {
return_managedObjectModel;
}
NSURL *modelURL = [[NSBundle mainBundle] URLForResource:@"coredatalearningtoblog" withExtension:@"momd"];
_managedObjectModel = [[NSManagedObjectModelalloc] initWithContentsOfURL:modelURL];
return _managedObjectModel;
}
- (NSPersistentStoreCoordinator *)persistentStoreCoordinator
{
if (_persistentStoreCoordinator != nil) {
return _persistentStoreCoordinator;
}
NSURL *storeURL = [[self applicationDocumentsDirectory] URLByAppendingPathComponent:@"coredatalearningtoblog.sqlite"];
NSError *error = nil;
_persistentStoreCoordinator = [[NSPersistentStoreCoordinatoralloc] initWithManagedObjectModel:[selfmanagedObjectModel]];
if (![_persistentStoreCoordinator addPersistentStoreWithType:NSSQLiteStoreTypeconfiguration:nil URL:storeURL options:nilerror:&error]) {
一旦发生错误,就需要在这进行对错误的处理
}
return_persistentStoreCoordinator;
}
//创建管理对象的上下文
- (NSManagedObjectContext *)managedObjectContext
{
if (_managedObjectContext != nil) {
return_managedObjectContext;
}
NSPersistentStoreCoordinator *coordinator = [selfpersistentStoreCoordinator];
if (coordinator != nil) {
_managedObjectContext = [[NSManagedObjectContextalloc] init];
[_managedObjectContextsetPersistentStoreCoordinator:coordinator];
}
return_managedObjectContext;
}
想知道app里创建了什么东西吗?那先运行一遍程序 然后
右击Finder->前往文件夹->输入 ~/Library/ ->Application Support -->iPhone Simulator
进入模拟器 找到所创建的app,模拟器里的app文件夹会是这个样子的,最笨的方法是一个文件夹一个文件夹的找,不过看文件夹后面的操作时间的话就很容易找到了

-->Documents
里面有三个文件,其中一个是coredatalearningtoblog.sqlite,打开该文件 会看到有一个ZEVENT的table,该表中有四个属性Z_PK,Z_ENT,Z_OPT,另外一个就是程序创建的属性timeStmap,在该表中,名字是ZTIMESTAMP
点击运行后的app导航栏里的+,即可以在tableview中增加内容,在sqlite里对应如下图

重新运行一遍,UITableView里的内容不会消失哦
浙公网安备 33010602011771号