通过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
相关推荐
CoreDataText这个文件名可能是项目中用于演示或存储CoreData操作的文本数据的实体名称。通过这样的封装,开发者可以更专注于业务逻辑,而不用过于关心数据存储的细节。 总之,CoreData是iOS开发中实现数据持久化的...
这个“iOS CoreData的小Demo”是一个很好的起点,对于初学者来说,它可以帮助理解并掌握CoreData的基本用法。在这个项目中,你将看到如何设置数据模型,创建NSManagedObject子类,以及在UI中与CoreData交互。 1. **...
这个“iOS CoreData 数据迁移操作底板”显然是一个辅助开发者理解和实践数据迁移的资源。下面将详细介绍iOS中CoreData数据迁移的相关知识点。 1. CoreData简介: CoreData并不是数据库,而是Apple提供的一套用于...
在iOS开发中,CoreData是苹果提供的一种强大的数据管理框架,用于实现本地数据持久化。相比SQLite3,CoreData提供了更高层次的抽象,使得开发者能够更便捷地处理数据模型、对象关系以及数据存储。本篇文章将详细介绍...
本教程通过一个简单的"增删改查"(CRUD)DEMO,深入讲解如何利用CoreData在iOS应用中进行数据操作。 一、CoreData基本概念 1. Managed Object Context(MOC):是CoreData的主要工作区,负责处理数据对象的创建、...
"ios-coredata简单封装.zip" 文件显然包含了一个简化Core Data使用流程的封装库或代码示例,旨在帮助开发者更高效地进行增删改查操作。 1. **建表(创建实体)**: 在Core Data中,"表"被称为实体(Entity)。创建...
同时,需要注意线程安全,因为CoreData操作通常应在主线程中进行。 删除数据则是通过NSManagedObjectContext的deleteObject方法来实现。首先,获取要删除的对象,然后调用此方法标记为待删除,最后保存上下文以实际...
在iOS应用开发中,CoreData是一个强大的框架,用于管理应用程序的模型层对象和数据持久化。这个教程将向你展示如何使用CoreData来构建一个简易的成绩管理系统,通过表视图来实现成绩的增删查改功能。以下是关于...
在iOS开发中,Core Data是苹果...综上所述,Core Data是iOS开发中处理数据的重要工具,通过理解并熟练掌握其基本概念和操作,可以高效地构建数据驱动的应用程序。在实践中,不断探索和优化,才能更好地利用这一框架。
【iOS CoreData 演示】 CoreData 是苹果公司提供的一种数据管理框架,主要用于 iOS 和 macOS 应用程序中,用于存储和检索应用程序的数据。它是一个对象图形管理系统,可以帮助开发者高效地处理模型层的对象,提供了...
在iOS开发中,CoreData和SQLite3是两种常见的数据存储技术。它们各有特点,适用于不同的应用场景。本Demo旨在展示如何在iOS应用中使用这两种技术,包括数据管理、用户交互以及正则表达式的应用。 首先,CoreData是...
CoreDataDAO继承于NSObject,作为一个基本的model; CoreDataDAO中含有managedObjectModel、managedObjectContext、persistentStoreCoordinator等基本类和方法,方便其...NoteDao继承于CoreDataDAO,执行Note的CRUD操作
在iOS中,SQLite可以通过FMDB库进行操作。FMDB是一个Objective-C的SQLite封装,提供了简单易用的API,使得开发者可以方便地执行SQL语句,进行数据的增删改查。例如,你可以创建数据库、创建表、插入数据、查询数据...
在TestCoreData这个压缩包文件中,可能包含了一些示例代码或者项目,用于演示如何在实际项目中使用CoreData。这些示例可能包括了如何设置CoreData模型、如何在代码中操作数据、如何执行查询以及如何处理数据变更等...
这个"ios coredata demo"项目旨在为初学者和其他开发者提供一个实践和理解Core Data的平台。通过这个项目,我们可以深入学习如何在iOS应用中使用Core Data进行数据存储和检索。 1. **Core Data架构** Core Data ...
本篇文章将深入探讨如何在iOS应用中使用CoreData进行数据的增删改查操作,并结合实例——分析网易新闻的存储数据来阐述其工作原理。 首先,让我们了解CoreData的基本概念。CoreData不是一个数据库,而是一个对象图...
通过简单的增删改查功能演示iOS CoreData框架的使用,还包括点击空白区域收起键盘的操作。本示例代码结构清晰,注释详尽,非常有助于初学者入门。 环境要求:项目在iOS SDK6.1和7.0环境下编译通过,其他SDK版本未...
### CoreData操作流程 1. **创建数据模型**: 使用Xcode的Data Model Editor创建并定义实体、属性和关系。 2. **初始化MOC**: 在应用程序中,你需要创建一个MOC实例,并配置持久化存储选项。 3. **创建实体对象**:...
**正文** iOS应用开发中,CoreData是一个强大的数据管理框架,用于存储和管理应用...通过创建数据模型、初始化CoreData栈、操作Managed Objects以及查询和更新数据,开发者可以在iOS应用中实现复杂的数据管理功能。