您的位置:首页 > 其它

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();

}

}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: