通过新建Core Data类型里的NSManagedObject subclass来创建模型对象类,自动生成实体描述所设置的属性
CoreData的使用
头文件导入和全局变量
导入CoreData.h头文件
#import <CoreData/CoreData.h>
{
NSManagedObjectContext *_objectContext;
}
创建图形上下文
NSString *dataBaseFilePath = [NSHomeDirectory() stringByAppendingPathComponent:@"Documents/DataBase.sqlite"];
NSURL *url = [NSURL fileURLWithPath:dataBaseFilePath];
NSURL *entityFilePath = [[NSBundle mainBundle] URLForResource:@"User" withExtension:@"momd"];
NSManagedObjectModel *model = [[NSManagedObjectModel alloc] initWithContentsOfURL:entityFilePath];
NSPersistentStoreCoordinator *psc = [[NSPersistentStoreCoordinator alloc] initWithManagedObjectModel:model];
/**
* 添加数据持久化
*
* @param storeType 数据储存类型
* @param configuration 储存的配置 nil
* @param storeURL 实体文件的URL地址
* @param options 选项
* @param error 错误提示
*
* @return 实体
*/
[psc addPersistentStoreWithType:NSSQLiteStoreType configuration:nil URL:url options:nil error:&error];
_context = [[NSManagedObjectContext alloc] initWithConcurrencyType:NSMainQueueConcurrencyType];
_context.persistentStoreCoordinator = psc;
插入对象
User *user = [NSEntityDescription insertNewObjectForEntityForName:@"User" inManagedObjectContext:_context];
user.username = [NSString stringWithFormat:@"apel-%i", i];
user.password = @"1234567890";
user.age = @20;
[_context save:nil];
查找对象
NSFetchRequest *request = [NSFetchRequest fetchRequestWithEntityName:@"User"];
request.predicate = [NSPredicate predicateWithFormat:@"age=%@", age];
NSArray *array = [_context executeFetchRequest:request error:nil];
修改某些对象属性值,先查询符合条件对象
NSFetchRequest *request = [NSFetchRequest fetchRequestWithEntityName:@"User"];
request.predicate = [NSPredicate predicateWithFormat:@"age=%@", age];
NSArray *array = [_context executeFetchRequest:request error:nil];
for (User *user in array) {
user.password = @"ljpljpljp";
}
[_context save:nil];
删除某些对象,先查询符合条件对象
NSFetchRequest *request = [NSFetchRequest fetchRequestWithEntityName:@"User"];
request.predicate = [NSPredicate predicateWithFormat:@"age=%@", age];
NSArray *array = [_context executeFetchRequest:request error:nil];
for (User *user in array) {
[_context deleteObject:user];
}
[_context save:nil];