CoreData
来源:互联网 发布:通过交换数据位运算 编辑:程序博客网 时间:2024/04/30 11:50
表结构:NSEntityDescription
表记录:NSManagedObject
数据库存放方式:NSPersistentStoreCoordinator(持久化存储协调者)
数据库操作:NSManagedObjectContext(被管理的对象上下文)
NSFetchRequest对象(相当于SQL语句)
NSEntityDescription 创建查询实体(相当于设置查询哪个表)
NSSortDescriptor 创建排序描述符,(ascending:是否升序)
delegate.h
@property (readonly,strong,nonatomic)NSManagedObjectContext *managedObjectContext;
@property (readonly,strong,nonatomic)NSManagedObjectModel *managedObjectModel;
@property (readonly,strong,nonatomic)NSPersistentStoreCoordinator *persistentStoreCoordinator;
- (void)saveContext;
- (NSURL *)applicationDocumentsDirectory;
delegate.m@synthesize managedObjectContext =_managedObjectContext;
@synthesize managedObjectModel =_managedObjectModel;
@synthesize persistentStoreCoordinator =_persistentStoreCoordinator;
- (void)saveContext
{
NSError *error =nil;
NSManagedObjectContext *managedObjectContext =self.managedObjectContext;
if (managedObjectContext !=nil)
{
if ([managedObjectContexthasChanges] && ![managedObjectContext save:&error])
{
// Replace this implementation with code to handle the error appropriately.
// abort() causes the application to generate a crash log and terminate. You should not use this function in a shipping application, although it may be useful during development.
NSLog(@"Unresolved error %@, %@", error, [erroruserInfo]);
abort();
}
else
NSLog(@"数据成功插入");
}
}
- (NSManagedObjectContext *)managedObjectContext
{
if (_managedObjectContext !=nil) {
return_managedObjectContext;
}
NSPersistentStoreCoordinator *coordinator = [selfpersistentStoreCoordinator];
if (coordinator !=nil) {
_managedObjectContext = [[NSManagedObjectContextalloc]init];
[_managedObjectContextsetPersistentStoreCoordinator:coordinator];
}
return_managedObjectContext;
}
- (NSManagedObjectModel *)managedObjectModel
{
if (_managedObjectModel !=nil) {
return_managedObjectModel;
}
NSURL *modelURL = [[NSBundlemainBundle]URLForResource:@"test"withExtension:@"momd"];
_managedObjectModel = [[NSManagedObjectModelalloc]initWithContentsOfURL:modelURL];
return_managedObjectModel;
}
- (NSPersistentStoreCoordinator *)persistentStoreCoordinator
{
if (_persistentStoreCoordinator !=nil) {
return_persistentStoreCoordinator;
}
//链接数据库,备数据存储
NSURL *storeURL = [[selfapplicationDocumentsDirectory]URLByAppendingPathComponent:@"test.sqlite"];
NSLog(@"%@",storeURL);
NSError *error =nil;
//持久化存储调度器由托管对象模型初始化
_persistentStoreCoordinator = [[NSPersistentStoreCoordinatoralloc]initWithManagedObjectModel:[selfmanagedObjectModel]];
//设置数据存储方式为SQLITE
if (![_persistentStoreCoordinatoraddPersistentStoreWithType:NSSQLiteStoreTypeconfiguration:nilURL:storeURLoptions:nilerror:&error]) {
NSLog(@"Unresolved error %@, %@", error, [erroruserInfo]);
abort();
}
return_persistentStoreCoordinator;
}
- (NSURL *)applicationDocumentsDirectory
{
NSURL *url=[[[NSFileManagerdefaultManager]URLsForDirectory:NSDocumentDirectoryinDomains:NSUserDomainMask]lastObject];
//NSLog(@"%@",url);
//NSFileManager *file=[NSFileManager defaultManager];
//NSLog(@"%@",file);
NSLog(@"%@",[NSSearchPathForDirectoriesInDomains(NSDocumentDirectory,NSUserDomainMask,YES)objectAtIndex:0]);
return url;
}
testView.h
@interface testview :UIViewController
{
IBOutletUITextField *citytext;
IBOutletUITextField *provincetext;
XYZAppDelegate *mydelegate;
}
@property(nonatomic,strong)UITextField *citytext;
@property(nonatomic,strong)UITextField *provincetext;
@property(nonatomic,strong)XYZAppDelegate *mydelegate;
-(IBAction)save:(UIButton *)sender;
-(IBAction)read:(UIButton *)sender;
testView.m
- (void)viewDidLoad
{
[superviewDidLoad];
self.mydelegate=(XYZAppDelegate *)[[UIApplicationsharedApplication]delegate];
}
-(IBAction)save:(UIButton *)sender
{
NSManagedObject *object=[NSEntityDescriptioninsertNewObjectForEntityForName:@"Province"inManagedObjectContext:self.mydelegate.managedObjectContext];
[objectsetValue:citytext.textforKey:@"cityname"];
[objectsetValue:provincetext.textforKey:@"provincename"];
[self.mydelegatesaveContext];
}
-(IBAction)read:(id)sender
{
NSFetchRequest *fetch=[[NSFetchRequestalloc]init];//相当于sql语句
NSEntityDescription *object=[NSEntityDescriptionentityForName:@"Province"inManagedObjectContext:self.mydelegate.managedObjectContext];//相当于查询的表
[fetchsetEntity: object ];
NSSortDescriptor *sort=[[NSSortDescriptoralloc]initWithKey:@"provincename"ascending:NO];//创建排序描述符 scending 是否升序
NSLog(@"sort:%@",sort);
NSArray *sortarr=[[NSArrayalloc]initWithObjects:sort,nil];
[fetchsetSortDescriptors:sortarr];
NSError *error;
NSArray *fetchresult=[self.mydelegate.managedObjectContextexecuteFetchRequest:fetcherror:&error];//获取执行请求结果
for (NSManagedObject *objectin fetchresult) {
// citytext.text=[object valueForKey:@"cityname"];
// provincetext.text=[object valueForKey:@"provincename"];
//NSLog(@"city:%@,province:%@ \n",[object valueForKey:@"cityname"],[object valueForKey:@"provincename"]);
//NSLog(@"%@",objectid);
}
// NSPredicate *pre=[NSPredicate predicateWithFormat:@"%@="];
// NSLog(@"%@",fetchresult);
NSLog(@"fetchresult is :%@",fetchresult);
}
DEMO下载
- CoreData
- CoreData
- CoreData
- CoreData
- CoreData
- CoreData
- CoreData
- CoreData
- CoreData
- CoreData
- COREDATA
- CoreData
- CoreData
- coreData
- CoreData
- Coredata
- coredata
- CoreData
- 迷宫问题算法分析
- 在ubuntu 64bit中运行32bit程序
- C# 参考之转换关键字:operator、explicit与implicit
- 包含c文件
- Bochs调试指令
- CoreData
- 探索 Java 同步机制(Monitor Object 并发模式在 Java 同步机制中的实现)
- jkd环境变量的配置
- 树
- OK6410 u-boot-2012.04.01移植一配置编译单板
- 使用python解析json文件
- android百度地图:主界面&&BMapManager
- MySQL存储引擎
- chat