codeData数据持久化代码
2014-04-04 11:38
211 查看
#import <UIKit/UIKit.h>
@interface AppDelegate :
UIResponder <UIApplicationDelegate>
@property (strong,
nonatomic) UIWindow *window;
//数据模型对象
@property (strong,
nonatomic) NSManagedObjectModel *managedObjectModel;
//上下文对象
@property (strong,
nonatomic) NSManagedObjectContext *managedObjectContext;
//持久化存储区
@property (strong,
nonatomic) NSPersistentStoreCoordinator *persistentStoreCoordinator;
@end
---------------------------------------------------------
-(NSManagedObjectContext *)managedObjectContext
{
//如果上下文对象已经创建,就直接返回创建的对象
if (_managedObjectContext !=
nil) {
return
_managedObjectContext;
}
//
先取得创建好的调度对象
NSPersistentStoreCoordinator *coordinator = [self
persistentStoreCoordinator];
//如果成功创建调度对象,就在此基础上创建上下文对象
if (coordinator !=
nil) {
_managedObjectContext = [[NSManagedObjectContext
alloc] init];
[_managedObjectContext
setPersistentStoreCoordinator:coordinator];
}
return
_managedObjectContext;
}
-(NSPersistentStoreCoordinator *)persistentStoreCoordinator
{
//如果已经创建好调度对象,则直接返回对象
if (_persistentStoreCoordinator !=
nil) {
return
_persistentStoreCoordinator;
}
//得到数据库的路径
NSString *docs = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory,
NSUserDomainMask, YES)
objectAtIndex:0];
//指定数据库文件名称
NSURL *storeUrl = [NSURL
fileURLWithPath:[docs stringByAppendingPathComponent:@"linkman.sqlite"]];
NSError *error =
nil;
//NSLog(@"storeUrl:%@", storeUrl);
//创建调度对象实例,并设置使用的数据模型
_persistentStoreCoordinator = [[NSPersistentStoreCoordinator
alloc] initWithManagedObjectModel:[self
managedObjectModel]];
//告诉调度对象物理数据库文件的位置
if (![_persistentStoreCoordinator
addPersistentStoreWithType:NSSQLiteStoreType
configuration:nil
URL:storeUrl options:nil
error:&error]) {
NSLog(@"%@, %@", error, [error
userInfo]);
}
return
_persistentStoreCoordinator;
}
//managedObjectModel初始化访问方法
-(NSManagedObjectModel *)managedObjectModel
{
//如果已经创建了数据模型对象则直接返回
if (_managedObjectModel !=
nil) {
return
_managedObjectModel;
}
_managedObjectModel = [[NSManagedObjectModel
mergedModelFromBundles:nil]
retain];
return
_managedObjectModel;
// NSLog(@"%d", _managedObjectContext.retainCount);
}
@interface AppDelegate :
UIResponder <UIApplicationDelegate>
@property (strong,
nonatomic) UIWindow *window;
//数据模型对象
@property (strong,
nonatomic) NSManagedObjectModel *managedObjectModel;
//上下文对象
@property (strong,
nonatomic) NSManagedObjectContext *managedObjectContext;
//持久化存储区
@property (strong,
nonatomic) NSPersistentStoreCoordinator *persistentStoreCoordinator;
@end
---------------------------------------------------------
-(NSManagedObjectContext *)managedObjectContext
{
//如果上下文对象已经创建,就直接返回创建的对象
if (_managedObjectContext !=
nil) {
return
_managedObjectContext;
}
//
先取得创建好的调度对象
NSPersistentStoreCoordinator *coordinator = [self
persistentStoreCoordinator];
//如果成功创建调度对象,就在此基础上创建上下文对象
if (coordinator !=
nil) {
_managedObjectContext = [[NSManagedObjectContext
alloc] init];
[_managedObjectContext
setPersistentStoreCoordinator:coordinator];
}
return
_managedObjectContext;
}
-(NSPersistentStoreCoordinator *)persistentStoreCoordinator
{
//如果已经创建好调度对象,则直接返回对象
if (_persistentStoreCoordinator !=
nil) {
return
_persistentStoreCoordinator;
}
//得到数据库的路径
NSString *docs = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory,
NSUserDomainMask, YES)
objectAtIndex:0];
//指定数据库文件名称
NSURL *storeUrl = [NSURL
fileURLWithPath:[docs stringByAppendingPathComponent:@"linkman.sqlite"]];
NSError *error =
nil;
//NSLog(@"storeUrl:%@", storeUrl);
//创建调度对象实例,并设置使用的数据模型
_persistentStoreCoordinator = [[NSPersistentStoreCoordinator
alloc] initWithManagedObjectModel:[self
managedObjectModel]];
//告诉调度对象物理数据库文件的位置
if (![_persistentStoreCoordinator
addPersistentStoreWithType:NSSQLiteStoreType
configuration:nil
URL:storeUrl options:nil
error:&error]) {
NSLog(@"%@, %@", error, [error
userInfo]);
}
return
_persistentStoreCoordinator;
}
//managedObjectModel初始化访问方法
-(NSManagedObjectModel *)managedObjectModel
{
//如果已经创建了数据模型对象则直接返回
if (_managedObjectModel !=
nil) {
return
_managedObjectModel;
}
_managedObjectModel = [[NSManagedObjectModel
mergedModelFromBundles:nil]
retain];
return
_managedObjectModel;
// NSLog(@"%d", _managedObjectContext.retainCount);
}
相关文章推荐
- Core Data持久化数据存储(3)-编写Core Data代码
- iOS6 编程:Core Data持久化数据存储(3)-编写Core Data代码
- iOS 数据持久化的NSKeyedArchiver CoreData FMDB几种方式的用法
- iOS6 编程:Core Data持久化数据存储(1)-Core Data 堆栈
- CoreData之数据持久化-01
- FluentData,一个轻量级开源的.NET ORM数据持久化框架
- Entity Framework Code First (七)空间数据类型 Spatial Data Types
- SqlDataReader读取数据的代码
- 第二行代码学习笔记——第六章:数据储存全方案——详解持久化技术
- Android 解析JSON数据示例代码[CODE]
- iOS应用开发之Core Data数据持久化存储笔记
- Entity Framework Code First (七)空间数据类型 Spatial Data Types
- CoreData(数据持久化的方式)
- iOS 6 编程--Core Data持久化数据存储(2)-使用Core Data实现简单ShoppingCart应用程序
- iOS开发 - CoreData框架 数据持久化
- IOS数据持久性保存之CodeData的使用
- 改善代码设计 —— 组织好你的“.NET技术”数据(Composing Data)
- 一段由数据库结构生成相应数据对象的代码(1)(2) (3)--DataHelper
- 代码的坏味道之八 :Data Clumps(数据泥团)
- 改善代码设计 —— 组织好你的数据(Composing Data)