CoreData 是ios中用来对数据做持久化的一个框架,它对sqlite进行了封装,使我们不需要学习数据库知识,也不要写SQL语句就能将数据保存到数据库。下面来介绍CoreData的如何使用。
1. 新建一个项目,勾选使用Core Data, 新建后需要导入:CoreData.framework
2.新建项目后,AppDelegate类会生成三个属性
[cpp] view plaincopy
- @property (readonly, strong, nonatomic) NSManagedObjectContext *managedObjectContext;
- @property (readonly, strong, nonatomic) NSManagedObjectModel *managedObjectModel;
- @property (readonly, strong, nonatomic) NSPersistentStoreCoordinator *persistentStoreCoordinator;
这三个对象操作数据会用的到。
3.新建一个实体对象
4. 创建一个类与实体对象关联
5. 保存一个实体模型对象
[java] view plaincopy
- Person *person = [NSEntityDescription insertNewObjectForEntityForName:@"Person" inManagedObjectContext:self.managedObjectContext];
- person.personId = @10002;
- person.age = @29;
- person.name = [NSString stringWithFormat:@"jack"];
- NSError *error = nil;
- BOOL ret = [self.managedObjectContext save:&error];
- if (ret) {
- NSLog(@"保存成功!");
- } else {
- NSLog(@"error");
- }
6.删除一个实体模型对象
[cpp] view plaincopy
- //删除
- - (void)modifyPerson {
- NSEntityDescription *entifyDesc = [NSEntityDescription entityForName:@"Person" inManagedObjectContext:self.managedObjectContext];
- NSFetchRequest *fetchReqeust = [[NSFetchRequest alloc] init];
- [fetchReqeust setEntity:entifyDesc];
- //查询年龄大于30的实体person对象
- NSPredicate *predicate = [NSPredicate predicateWithFormat:@"self.age=30"];
- [fetchReqeust setPredicate:predicate];
- //查询出来的person对象数组
- NSArray *persons = [self.managedObjectContext executeFetchRequest:fetchReqeust error:nil];
- //遍历删除
- for (Person *p in persons) {
- [self.managedObjectContext deleteObject:p];
- }
- }
7. 查询
[cpp] view plaincopy
- //根据条件查询数据
- - (void)queryPerson {
- NSEntityDescription *entifyDesc = [NSEntityDescription entityForName:@"Person" inManagedObjectContext:self.managedObjectContext];
- //查询对象
- NSFetchRequest *fetchReqeust = [[NSFetchRequest alloc] init];
- [fetchReqeust setEntity:entifyDesc];
- //查询条件
- NSPredicate *predicate = [NSPredicate predicateWithFormat:@"self.age>40 && self.personId>10015"];
- [fetchReqeust setPredicate:predicate];
- //排序,按age降序排列
- NSSortDescriptor *sortDesc = [NSSortDescriptor sortDescriptorWithKey:@"age" ascending:NO];
- [fetchReqeust setSortDescriptors:@[sortDesc]];
- //查询
- NSArray *persons = [self.managedObjectContext executeFetchRequest:fetchReqeust error:nil];
- for (Person *p in persons) {
- NSLog(@"name=%@,age=%@,id=%@",p.name,p.age,p.personId);
- }
- }
参考资料:
Core Data Reference
API listing for the Core Data classes
http://developer.apple.com/documentation/Cocoa/Reference/CoreData_ObjC/index.html
NSPredicate Reference
API listing for NSPredicate
http://developer.apple.com/documentation/Cocoa/Reference/Foundation/ObjC_classic/Classes/NSPredicate.html
发表评论
-
如何使用AV Foundation从摄像头将视频帧捕获为图像
2012-11-15 17:21 7454如果译错,感谢指出。 英文原文地址:https://d ... -
iOS单元测试
2012-11-05 11:37 918转自:http://www.cnblogs.com/ke ... -
ASIHTTPRequest缓存策略的设置
2012-10-30 17:23 3873ASIHTTPRequest 是一款强大的网络请求框架,该框架 ... -
【无限互联】xcode自定义类的模板
2012-10-23 19:37 1155翻译:http://www.bobmccune.com/ ... -
【无限互联】适配iOS6和iPhone5屏幕
2012-10-23 18:05 24741. iOS6的mo模拟器比较大,通过comman ... -
【无限互联】mac下配置svn服务器
2012-10-22 13:30 769在mac下配置svn服务器其实很简单,只需要简单的几句命令就可 ... -
【无限互联】iOS开发之多线程开发
2012-10-10 17:41 1236本节要点: 1.多线程的概念 2.掌握iOS中多线程 ... -
【无限互联】iOS开发block用法之UIAlertView控件的修改
2012-10-10 17:06 2685原始的UIAlertView的需要通过委托方法来实现按钮 ... -
Objective-C新特性
2012-09-05 14:38 702基于Xcode4.4(不完全独有)。1. 成员方法无需前置声明 ... -
iphone-NSDate日期处理
2012-08-31 16:25 1065NSDate存储的是世界标准时(UTC),输出时需要 ... -
iphone开发资源汇总
2012-08-31 16:16 1605如何用Facebook graphic api上传视 ... -
iOS-如何让xcode自动检查内存泄露
2012-08-31 16:05 1096在project-setting中找到 “Run Static ... -
UIScrollView的属性总结
2012-02-08 15:58 4430在滚动过程当中,其实是在修改原点坐标 当手指触摸后, scr ... -
iPhone开发之 ARC是什么
2012-01-17 16:58 1379相关链接:http://blog.csdn ... -
画图时 自己做的一小笔记
2012-01-07 21:02 9610 CGContextRef context = UIGra ... -
让Xcode 4.2生成的app支持旧版iOS设备(armv6)
2012-01-07 00:46 1335这几天遇到一个非常奇怪的问题,基于Xcode 4.2开发的ap ... -
5个开源库的JSON解析速度测试
2011-12-03 23:15 1458iOS5新增了JSON解析的API ... -
获取iOS设备当前ip地址
2011-11-17 23:16 1385第一种方法是用系统api的方式获取,如下 #include & ... -
Quartz 2D编程指南(2) - 图形上下文(Graphics Contexts)
2011-11-12 00:08 1448一个Graphics Context表示一 ... -
Quartz 2D编程指南(1) - 概览
2011-11-11 23:57 1716Quartz 2D是一个二维图形绘制引擎,支持iOS环境和Ma ...
相关推荐
本文将深入探讨iOS中的几种主要数据持久化技术:Preference(偏好设置)、文件存储、归档、数据库(SQLite)以及Core Data的使用。 1. **Preference(偏好设置)** iOS中的偏好设置,通常被称为NSUserDefaults,是...
本案例主要探讨两种常见的数据持久化方法:沙盒中的文件系统、Core Data以及NSUserDefaults。我们将深入理解这三种方式的工作原理,以及在实际应用中如何选择和使用它们。 首先,"沙盒"是iOS应用的专属运行环境,每...
本篇文章将详细介绍三种主要的数据持久化方法:SQLite(通过FMDB库)、Core Data以及Archiver(序列化)。 **1. SQLite (通过FMDB库)** SQLite是一个轻量级的、自包含的、开源的关系型数据库,它在iOS中广泛用于...
iOS中有五种持久化数据的方式:属性列表、对象归档、NSUserDefaults、SQLite3和Core Data。 本文介绍对象归档来持久化数据。归档的作用就是将对象以文件的形式保存到磁盘中,以使得数据序列化和持久化。 使用归档的...
总结来说,"SingleTableCoreDataDemo"是一个实践教程,它帮助开发者了解如何在iOS应用中使用Core Data进行数据管理,实现数据的持久化存储,并通过UI展示和交互。通过学习和实践这个示例,开发者可以掌握Core Data的...
在需要使用数据持久化的代码位置,引入头文件#import "JGGchijiuhua.h"。 c. 调用类方法进行数据的保存和读取。 保存数据示例: ```objc NSDictionary *dataDict = @{@"key1":@"value1", @"key2":@"value2"}; ...
在iOS应用开发中,Core Data是苹果提供的一种强大的数据持久化框架,用于管理应用程序的数据模型。数据验证是确保数据质量的重要环节,特别是在用户输入数据时,防止无效或不合法的数据进入数据库。本节将深入探讨...
在iOS中,常见的数据持久化方式有:SQLite数据库、Core Data框架、Property List (plist)、User Defaults以及文件系统存储等。 **2. 归档与解档** Objective-C和Swift提供了NSCoding协议,用于对象的序列化和反...
Core Data是Apple提供的一项强大的数据管理框架,它简化了应用程序的数据持久化过程,使得开发者可以更加专注于业务逻辑,而不是底层数据库操作。本教程通过详细的实例和实践指导,帮助读者全面理解并掌握Core Data...
数据持久化有多种方法,包括SQLite数据库、Core Data框架、Property List (plist)、文件系统存储以及UserDefaults等。下面将详细介绍这些方法及其应用。 1. **SQLite**:SQLite 是一个轻量级的关系型数据库,适用于...
在iOS开发中,有多种实现数据持久化的方式,其中包括简单易用的Property List (plist)、灵活的SQLite数据库以及Apple官方提供的Core Data框架。接下来,我们将深入探讨这三种数据持久化方法及其应用。 **Property ...
相比于其他数据持久化方式(如Core Data、SQLite),NSUserDefaults更适合存储小量且访问频繁的数据。 二、使用步骤 1. 引入头文件:首先在需要使用NSUserDefaults的文件中导入Foundation框架的头文件`#import ...
在iOS应用开发中,数据持久化是至关重要的一个环节,它允许应用程序在用户退出或设备重启后仍能保存和恢复数据。本资料主要探讨的是iOS中的数据存储方式,特别是使用FMDB库对SQLite数据库进行封装以及SQL语言的应用...
**Core Data** 是苹果为iOS和OS X开发的应用程序提供的一种强大而灵活的数据管理和持久化框架。它不仅支持对象图管理、数据持久化以及版本控制等功能,还能够自动处理常见的内存管理和多线程问题。在《Core Data in ...
此书详细介绍了如何使用Core Data框架在iOS应用中进行数据持久化,涵盖了从基础知识到高级特性的广泛主题。 知识点主要包括以下几个方面: 1. **Core Data框架概述**:Core Data是苹果公司提供的一套对象图和持久...
《iOS Core Data高级编程 第二版》是针对iOS开发者在数据持久化领域的一本专业书籍,专门讲解了如何高效使用Core Data框架。这本书涵盖了Core Data的基础知识、高级概念以及实用技巧,适合有一定iOS开发经验,并希望...
在 Windows 操作系统环境下,Consul 的配置文件默认情况下并不具备持久化存储的特性,这意味着一旦服务器重启或遭遇意外断电,所有未被保存的配置更改将会丢失,这对服务的稳定性和可靠性构成了潜在风险。...
本实例将聚焦于如何在iPhone应用中使用SQLite3进行数据持久化操作。 SQLite3是一个嵌入式的SQL数据库引擎,它不需要独立的服务进程,可以直接集成到应用程序中。与Core Data相比,SQLite3提供了更直接的SQL语句操作...
2. 持久化:Core Data不仅负责内存中的数据管理,还负责将这些数据持久化到磁盘。它支持SQLite和Binary两种主要的存储模式,以及In-Memory存储模式(不持久化,适用于临时数据)。SQLite存储模式使用SQL数据库进行...