标签:
CoreData提供了一种简便的对象持久化管理方法,使你可以不用关心数据的存储,只需要关心对象的增加、删除、更改、读写。
基本概念
托管对象(managed object)
一个托管对象代表你想要保存到数据存储中的一个对象。这在概念上类似于SQL中的一条记录, 并且通常也包含一些域,这些域对应于你想要保存的对象的属性。
数据存储(data store)
Core Data支持4中类型的数据存储:SQLiteStore, XMLStore, BinaryStore, InMemoryStore。

使用CoreData
2 有了托管对象模型实例之后,我们就可以创建一个持久化协调器实例了。持久化协调器处理到数据存储的连接。大概是处理怎么把对象写到数据存储或怎么从数据存储读对象吧。
3 有了持久化协调器实例之后,我们需要提供一个数据存储给它管理。你可以通过发送addPersistentStoreWithType:configuration:URL:options:error:消息来实现。
4 最后一步就是实例化托管对象上下文。有了托管对象上下文,你就可以方便的管理对象了。
下面是使用的实例代码:
1 初始化
-(void) viewDidLoad中
//创建管理对象模型
objectModel = [NSManagedObjectModel mergedModelFromBundles:nil];
// 创建持久化数据存储协调器
coordinator = [[NSPersistentStoreCoordinator alloc] initWithManagedObjectModel:objectModel];
// 添加数据存储
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
// 创建一个SQLite数据库作为数据存储
NSString *documentsDir = [paths objectAtIndex:0];
NSString *filePath = [documentsDir stringByAppendingPathComponent:@"datastore.sqlite"];
NSURL *databaseURL = [NSURL fileURLWithPath:filePath];
NSError *error = nil;
[coordinator addPersistentStoreWithType:NSSQLiteStoreType configuration:nil URL:databaseURL options:nil error:&error];
// 创建托管对象上下文
objectContext = [[NSManagedObjectContext alloc] init];
[objectContext setPersistentStoreCoordinator:coordinator];
2 添加对象
NSString* newName = nameField.text;
NSString* newPhone = phoneField.text;
NSString* newPostcode = postcodeField.text;
ContactData *newContact = (ContactData *)[NSEntityDescription insertNewObjectForEntityForName:@"ContactData" inManagedObjectContext:objectContext];
newContact.customerName = newName;
newContact.phoneNumber = newPhone;
newContact.postCode = newPostcode;
NSError* error;
if ([objectContext save:&error])
{
[self fetchExistingContactData];
[tableofcontacts reloadData];
}
3 访问对象
NSFetchRequest* fetchRequest = [[NSFetchRequest alloc] init];
NSEntityDescription* entityDescription = [NSEntityDescription entityForName:@"ContactData"
inManagedObjectContext:objectContext];
[fetchRequest setEntity:entityDescription];
NSError* error;
existingContacts = [objectContext executeFetchRequest:fetchRequest error:&error];
标签:
原文地址:http://www.cnblogs.com/conanwin/p/4604860.html