通过NSManagerDocument获取NSManagerObjectContext然后操作
NSFetchRequest 存放查询条件的(NSPredicate等)
NSManagerObjectContext对象 通过方法executeFetchRequest: error:来返回查询结果。
如果需要查询全部 的时候 就对NSFetchRequest 不要设置NSPredicate就可以了。
太晚了 有空再写吧。
// // ViewController.m // DemoCoreData // // Created by liu poolo on 13-3-17. // Copyright (c) 2013年 liu poolo. All rights reserved. // #import "ViewController.h" #import "Student.h" #import "Book.h" @interface ViewController () @end @implementation ViewController @synthesize managedObjectContext=m_managedObjectContext; - (IBAction)btGetManagerDocument:(id)sender { NSManagedObjectContext *t=self.managedObjectContext; } int i=0; - (IBAction)btInsertBook:(id)sender { NSArray *paths=NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES); NSString *basePath=([paths count]>0)?[paths objectAtIndex:0]:nil; NSURL *url=[NSURL fileURLWithPath:[NSString stringWithFormat:@"%@%@",basePath,@"test.sqlite"]]; NSLog(@"111"); UIManagedDocument *md=[[UIManagedDocument alloc]initWithFileURL:url]; if([[NSFileManager defaultManager] fileExistsAtPath:[url path]]){ [md openWithCompletionHandler:^(BOOL success){ if(success){ NSLog(@"1111"); if(md.documentState==UIDocumentStateNormal){ m_managedObjectContext=md.managedObjectContext; Book *b1=[NSEntityDescription insertNewObjectForEntityForName:@"Book" inManagedObjectContext:m_managedObjectContext]; b1.b_id=[NSNumber numberWithInt:0]; b1.b_name=@"poolo 日记"; Student *s1=[NSEntityDescription insertNewObjectForEntityForName:@"Student" inManagedObjectContext:m_managedObjectContext]; b1.b_owner=s1; s1.s_id=[NSNumber numberWithInt:1]; s1.s_name=@"poolo"; } }else{ NSLog(@"counldn't open document at %@",url); } }]; }else{ [md saveToURL:url forSaveOperation:UIDocumentSaveForCreating completionHandler:^(BOOL success){ if(success){ if(md.documentState==UIDocumentStateNormal){ m_managedObjectContext=md.managedObjectContext; NSLog(@"2url:%@",url); [md closeWithCompletionHandler:^(BOOL success) { }]; } }else{ NSLog(@"counldn't open document at %@",url); } }]; } } - (IBAction)btQuery:(id)sender { NSArray *paths=NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES); NSString *basePath=([paths count]>0)?[paths objectAtIndex:0]:nil; NSURL *url=[NSURL fileURLWithPath:[NSString stringWithFormat:@"%@%@",basePath,@"test.sqlite"]]; NSLog(@"111"); UIManagedDocument *md=[[UIManagedDocument alloc]initWithFileURL:url]; if([[NSFileManager defaultManager] fileExistsAtPath:[url path]]){ [md openWithCompletionHandler:^(BOOL success){ if(success){ NSLog(@"1111"); if(md.documentState==UIDocumentStateNormal){ NSFetchRequest *f=[NSFetchRequest fetchRequestWithEntityName:@"Student"]; NSPredicate *pc=[NSPredicate predicateWithFormat:@"s_name contains %@",@"poolo"]; f.predicate=pc;//如果需要查询全部 的时候 就对NSFetchRequest 不要设置NSPredicate就可以了。 NSError *e; NSArray* students=[md.managedObjectContext executeFetchRequest:f error:&e]; for(Student *st in students){ for(Book *bk in st.s_books){ NSLog(@"stundet id:%@ name:%@ book_id:%@ book_name:%@",st.s_id,st.s_name,bk.b_id,bk.b_name); } } } }else{ NSLog(@"counldn't open document at %@",url); } }]; }else{ [md saveToURL:url forSaveOperation:UIDocumentSaveForCreating completionHandler:^(BOOL success){ if(success){ if(md.documentState==UIDocumentStateNormal){ m_managedObjectContext=md.managedObjectContext; NSLog(@"2url:%@",url); [md closeWithCompletionHandler:^(BOOL success) { }]; } }else{ NSLog(@"counldn't open document at %@",url); } }]; } } - (void)viewDidLoad { [super viewDidLoad]; // Do any additional setup after loading the view, typically from a nib. } - (void)didReceiveMemoryWarning { [super didReceiveMemoryWarning]; // Dispose of any resources that can be recreated. } @end
相关推荐
本资源为本人文章 “iOS CoreData数据迁移” 操作底板,可以下载下来参照博客进行学习数据迁移
改demo 实现了iOS里面的coredata的增删改查操作
CoreDataDAO继承于NSObject,作为一个基本的model; CoreDataDAO中含有managedObjectModel、managedObjectContext、persistentStoreCoordinator等基本类和方法,方便其...NoteDao继承于CoreDataDAO,执行Note的CRUD操作
通过简单的增删改查功能演示iOS CoreData框架的使用,还包括点击空白区域收起键盘的操作。本示例代码结构清晰,注释详尽,非常有助于初学者入门。 环境要求:项目在iOS SDK6.1和7.0环境下编译通过,其他SDK版本未...
iOS中的CoreData实现增删改查
这里主要是讲如何使用系统自带的 CoreData 类对数据持久化到本地的操作,对于初学者十分适合使用,作为作者的我,将所有必要的注释全部写的清楚明了,使得 ios 开发人员在参考此文档时既有 demo 又有解释,实现快速上手.
第二是CoreData操作数据不需要使用SQLite代码,使用方便。第三是CoreData把数据用面向对象方式进行管理,操作数据库更方便。 CoreData的核心是Core Data stack(技术栈堆)。CoreData就是依靠Core Data stack中的几个...
-- IOS之分析网易新闻存储数据 CoreData的使用 增删改查 -- IOS二维码扫描Demo -- 18个 ios 项目源代码 -- iOS通讯录联系人列表较完整(中文排序) -- 仿网易新闻客户端(ios) -- UICollectionView Demo -- iOS 实现...
带CoreData示例的iOS TableView 由( 在07 / SEP / 15上创建。 什么? 关于TableView和CoreData一起工作的简单示例。 iOS版本: 9 语言:斯威夫特 Xcode: 7.0 特征 具有操作的TableView(添加项目并在单元格上...
操作系统:LInux、IOS、树莓派、安卓开发、微机操作系统、网络操作系统、分布式操作系统等。此外,还有嵌入式操作系统、智能操作系统等。 网络与通信:数据传输、信号处理、网络协议、网络与通信硬件、网络安全网络...
CoreData的简单用法,增删改... CoreData让不懂sql语句的人获益不少,因为他的操作基本是不用sql语句的。个人感觉效率比FMDM操作数据库高,而且还能直接生成实体类,省去了我们去一个文件一个文件的去建立model层的东西
源码NLCoreData,NLCoreData是包装Core Data框架的开源类库,让Core Data操作更加容易和易读。使用NLCoreData可以少写很多代码,增加代码的易读性,并且可以在编译时进行代码检查。
1.一个完整的app,简单完整的展示coredata在swift中的用法。...包括操作撤回、取消撤回功能。3.包括监控系统语言修改功能。4.包括coredata与tableview的融合。5.完全是用swift实现,下载后直接xcode即可运行。
具体使用方法参见博客: .../* CoreData 基本操作方法封装 */ http://blog.csdn.net/marujunyy/article/details/18500523 /* AFNetWorking 的简单使用 */ http://blog.csdn.net/marujunyy/article/details/18424711
iOS开以中,CoreData的一个简单实用的小例子,包括以下功能: 1、数据读取; 2、数据存储; 3、添加数据; 4、删除数据; 注:读取数据操作,支持按条件查询、按条件排序两个功能。 如有不明白的地方,可以发邮件到...
话题产品特点自动将CoreData模型映射到CloudKit私有数据库支持资产后台同步解决冲突要求iOS 8.0以上/ Mac OS X 10.10以上Xcode 7.1以上通讯如果您想贡献,请提交。 如果您的应用程序使用Seam,我们将很高兴将其添加...
Core Data是Mac OS X中Cocoa API的一部分,首次在Mac OS X 10.4 Tiger与iOS 3.0系统中出现[2]。它允许按照实体-属性-值模型组织数据,并以XML,二进制文件或SQLite数据文件的格式将其串行化。Core Data允许用户使用...
GYDataCenter 是一个 SQLite 数据库框架,提供了一套简单易用的面向对象的数据操作接口,同时保留了 SQL 查询的灵活性。GYDataCenter 简单易上手,相对于 CoreData,GYDataCenter 的学习成本更低。
包含AFNetWorking,CoreData,GCD,KissXMl,NsPredicate,NSTHread,NSSession,Popover,SDwebImage,sql,经纬度转换,触底刷新,FLV布局,代码操作数据库,反向传值,录音,视频播放,同步请求,网络请求,系统地图...
适合初级和高级开发者,完全自定义,语法友好,兼容OS X和iOS,文档支持完善,测试完善(所有组件均使用XCTest测试)。 可在不同的堆栈间进行更改,而不会影响到app的其余部分。 百分百Swift编写,对于Objective-C,...