CoreData的使用
2016-01-23 21:51
246 查看
1.创建一个NSManagedObjectModel 对象数据模型
通过懒加载创建
返回应用程序的托管对象模型。如果模型不存在,创建的应用程序的模型。
- (NSManagedObjectModel *)managedObjectModel {
if (_managedObjectModel !=
nil)
return _managedObjectModel;
NSURL *modelURL = [[NSBundle
mainBundle] URLForResource:@"azery"
withExtension:@"momd"];
_managedObjectModel = [[NSManagedObjectModel
alloc] initWithContentsOfURL:modelURL];
return
_managedObjectModel;
}
2. 创建NSPersistentStoreCoordinator 持久化存储协调者,包含数据存储的名字和位置
返回应用程序的持久性存储协调员。如果协调器不存在,创建它。
- (NSPersistentStoreCoordinator *)presistentStoreCoordinator{
if (_presistentStoreCoordinator ==
nil) {
NSURL *storeURL = [[self
applicationDocumentsDirectory]
URLByAppendingPathComponent:@"talenkr.sqlite"];
NSDictionary *option = [NSDictionary
dictionaryWithObjectsAndKeys:
[NSNumber
numberWithBool:YES],
NSMigratePersistentStoresAutomaticallyOption,
[NSNumber
numberWithBool:YES],
NSInferMappingModelAutomaticallyOption,
nil];
NSError *error = nil;
_presistentStoreCoordinator = [[NSPersistentStoreCoordinator
alloc]
initWithManagedObjectModel:self.managedObjectModel];
if (![_presistentStoreCoordinator
addPersistentStoreWithType:NSSQLiteStoreType
configuration:nil URL:storeURL options:option error:&error])
{
abort();
}
}
return
_presistentStoreCoordinator;
}
3. 创建NSManagedObjectContext 管理对象的上下文,类似于应用程序和数据存储之间的缓冲区,可以增加删除修改查找或者管理对象
- (NSManagedObjectContext *)managedObjectContext
{
if (_managedObjectContext ==
nil) {
if (![NSThread
isMainThread]) {
[self
performSelectorOnMainThread:@selector(managedObjectContext)
withObject:nil
waitUntilDone:YES];
return
_managedObjectContext;
}
NSPersistentStoreCoordinator *coordinator =
self.presistentStoreCoordinator;
if (coordinator !=
nil) {
_managedObjectContext = [[NSManagedObjectContext
alloc] initWithConcurrencyType:NSMainQueueConcurrencyType];
_managedObjectContext.persistentStoreCoordinator = coordinator;
}
return
_managedObjectContext;
}
return
_managedObjectContext;
}
4. 提供一个对象保存方法给外界使用
/*
这个实现替换为适当的代码来处理错误。
abort()会导致应用程序生成一个崩溃日志和终止。你不应该使用这个函数在船舶应用程序中,虽然它可能是有用的在开发过程中。如果它是不可能从错误中恢复,显示警报面板指示用户通过按Home键退出应用程序。
*/
- (void)saveContext{
NSError *error =
nil;
NSManagedObjectContext *managedObjectContext =
self.managedObjectContext;
if (managedObjectContext !=
nil) {
if ([managedObjectContext
hasChanges] && ![managedObjectContext save:&error]) {
abort();
}
}
}
通过懒加载创建
返回应用程序的托管对象模型。如果模型不存在,创建的应用程序的模型。
- (NSManagedObjectModel *)managedObjectModel {
if (_managedObjectModel !=
nil)
return _managedObjectModel;
NSURL *modelURL = [[NSBundle
mainBundle] URLForResource:@"azery"
withExtension:@"momd"];
_managedObjectModel = [[NSManagedObjectModel
alloc] initWithContentsOfURL:modelURL];
return
_managedObjectModel;
}
2. 创建NSPersistentStoreCoordinator 持久化存储协调者,包含数据存储的名字和位置
返回应用程序的持久性存储协调员。如果协调器不存在,创建它。
- (NSPersistentStoreCoordinator *)presistentStoreCoordinator{
if (_presistentStoreCoordinator ==
nil) {
NSURL *storeURL = [[self
applicationDocumentsDirectory]
URLByAppendingPathComponent:@"talenkr.sqlite"];
NSDictionary *option = [NSDictionary
dictionaryWithObjectsAndKeys:
[NSNumber
numberWithBool:YES],
NSMigratePersistentStoresAutomaticallyOption,
[NSNumber
numberWithBool:YES],
NSInferMappingModelAutomaticallyOption,
nil];
NSError *error = nil;
_presistentStoreCoordinator = [[NSPersistentStoreCoordinator
alloc]
initWithManagedObjectModel:self.managedObjectModel];
if (![_presistentStoreCoordinator
addPersistentStoreWithType:NSSQLiteStoreType
configuration:nil URL:storeURL options:option error:&error])
{
abort();
}
}
return
_presistentStoreCoordinator;
}
3. 创建NSManagedObjectContext 管理对象的上下文,类似于应用程序和数据存储之间的缓冲区,可以增加删除修改查找或者管理对象
- (NSManagedObjectContext *)managedObjectContext
{
if (_managedObjectContext ==
nil) {
if (![NSThread
isMainThread]) {
[self
performSelectorOnMainThread:@selector(managedObjectContext)
withObject:nil
waitUntilDone:YES];
return
_managedObjectContext;
}
NSPersistentStoreCoordinator *coordinator =
self.presistentStoreCoordinator;
if (coordinator !=
nil) {
_managedObjectContext = [[NSManagedObjectContext
alloc] initWithConcurrencyType:NSMainQueueConcurrencyType];
_managedObjectContext.persistentStoreCoordinator = coordinator;
}
return
_managedObjectContext;
}
return
_managedObjectContext;
}
4. 提供一个对象保存方法给外界使用
/*
这个实现替换为适当的代码来处理错误。
abort()会导致应用程序生成一个崩溃日志和终止。你不应该使用这个函数在船舶应用程序中,虽然它可能是有用的在开发过程中。如果它是不可能从错误中恢复,显示警报面板指示用户通过按Home键退出应用程序。
*/
- (void)saveContext{
NSError *error =
nil;
NSManagedObjectContext *managedObjectContext =
self.managedObjectContext;
if (managedObjectContext !=
nil) {
if ([managedObjectContext
hasChanges] && ![managedObjectContext save:&error]) {
abort();
}
}
}
相关文章推荐
- Oracle rowid
- 基于eclipse maven 开发 spark 集群计算
- 深入查询(转)
- System.Web.HttpCompileException (0x80004005): (0): error CS0016: 未能写入输出文件
- OSPF知识点归纳
- Java中的类反射与泛型信息
- 二叉树
- HDOJ 5605-geometry【数学】
- 旋转数组的最小数字
- nginx服务器中的安全配置
- mp3播放器功能实现简易代码
- linux下向yeelink添加数据点
- POJ 3608 Bridge Across Islands(旋转卡壳求凸多边形最短距离)
- JS操作JSON总结
- weblogic的nohup.out日志的管理
- css
- 桶排序
- 【原】mysql慢日志分析
- 数据库——环境初建改端口和密码(转)
- 斯坦福机器学习在线demo