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里的内容不会消失哦 

posted on 2013-11-03 22:30  永远的冰蝴蝶  阅读(311)  评论(0)    收藏  举报

导航