iOS -数据持久化之CoreData

Core Data是iOS5之后才出现的一个框架,它提供了对象-关系映射(ORM)的功能,即能够将OC对象转化成数据,保存在SQLite数据库文件中,也能够将保存在数据库中的数据还原成OC对象。在此数据操作期间,我们不需要编写任何SQL语句

1.创建项目的时候勾选Use the CoreData

2.创建好之后就会在左边的文件名那里看到一个CoreData.xcdatamodeldde文件

3.点击之后在Xcode的中间可以看到它的内容,之后点击左下角的Add Entity可以添加表(表名可以修改,但首字母必须大写)

4.在表里面添加属性

5.创建表的数据模型

(1)点击New File

(2)点击next

(3)点击next

(4)要创建哪个表的数据模型就勾选哪一个,然后点击next

//    读取coreData

//    1、读取managedObjectModel

//    2、找到里面所有实体的名字[model entitiesByName]

//    3、找到要读取的实体NSEntityDescription *entry = entryDic[@"UserInfo"];

//    4、初始化 查询对象 NSFetchRequest *request = [[NSFetchRequest alloc]init];

//    5、通过上下文 查找 NSArray *list = [context executeFetchRequest:request error:nil];

 1  NSManagedObjectContext *context = [[AppDelegate appDelegate] managedObjectContext];
 2
 3
 4
 5     //    1、读取managedObjectModel
 6
 7     NSManagedObjectModel *model = [[AppDelegate appDelegate] managedObjectModel];
 8
 9     //    2、找到里面所有实体的名字[model entitiesByName]
10
11     NSDictionary *entitiesDic = [model entitiesByName];
12
13     //    3、找到要读取的实体NSEntityDescription *entry = entryDic[@"UserInfo"];
14
15     NSEntityDescription *entity = entitiesDic[@"Userinfo"];
16
17     //    4、初始化 查询请求对象 NSFetchRequest
18
19     NSFetchRequest *request = [[NSFetchRequest alloc]init];
20
21     request.entity = entity;
22
23     //    request.predicate
24
25     //    request.fetchLimit
26
27     //    request.fetchOffset
28
29
30
31     //    5、通过上下文开始查询
32
33    aList = [context executeFetchRequest:request error:nil];
34
35     NSLog(@"%@",aList);
36
37
38
39     if (aList.count!=0) {
40
41         [MytableView reloadData];
42
43 //        [MytableView reloadSections:[NSIndexSet indexSetWithIndex:0] withRowAnimation: UITableViewRowAnimationNone];
44
45     }
46
47
48
49  

注:appDelegate这个方法是在AppDelegate文件里面定义的,在.h文件声明

+(AppDelegate *)appDelegate;

在.m文件实现

+(AppDelegate *)appDelegate{
    return (AppDelegate *)[UIApplication sharedApplication].delegate;
}

操作coreData

1、不管增删改查都需要先初始化 上下文[app managedObjectContext]

2、插入具体内容到上下文

+ (id)insertNewObjectForEntityForName:(NSString *)entityName inManagedObjectContext:(NSManagedObjectContext *)context;

3、保存 saveContext

- (void)addEntity{

    NSManagedObjectContext * conText = [[AppDelegate appDelegate]managedObjectContext];
   Massage * massage = [NSEntityDescription insertNewObjectForEntityForName:@"Massage" inManagedObjectContext:conText];
    [massage setValue:postView.titleTextFild.text forKey:@"title"];
    [massage setValue:postView.contentTextFild.text forKey:@"content"];
    Userinfo *userinfo = [NSEntityDescription insertNewObjectForEntityForName:@"Userinfo" inManagedObjectContext:conText];
         NSArray * List = @[@"陈3.jpg",@"陈2.jpg",@"是1.jpg",@"是3.jpg"];
    int arc = arc4random()%List.count;

    UIImage *img = [UIImage imageNamed:List[arc] ];
    [userinfo setValue:@"hehehe" forKey:@"name"];
    [userinfo setValue:@(11) forKey:@"age"];
    [userinfo setValue:UIImageJPEGRepresentation(img, 1) forKey:@"headImage"];
    [userinfo setValue:massage forKey:@"massage"];

    [[AppDelegate appDelegate] saveContext];
   }
时间: 2024-08-11 09:55:42

iOS -数据持久化之CoreData的相关文章

iOS 数据持久化之CoreData(二)堆栈建立和基本操作Demo

原创Blog,转载请注明出处 blog.csdn.net/hello_hwc 欢迎关注我的iOS SDK详解专栏 http://blog.csdn.net/column/details/huangwenchen-ios-sdk.html 前言:本文会通过一个完整的工程创建,讲解 CoreData的堆栈创建 四种基本的操作(查询,创建,删除,更新) 简单的MVC设计 如何使用Block传递Action,缩减代码量 再CoreData使用类别扩展NSManagedObject方法 Demo下载 ht

iOS数据持久化存储

本文中的代码托管在github上:https://github.com/WindyShade/DataSaveMethods 相对复杂的App仅靠内存的数据肯定无法满足,数据写磁盘作持久化存储是几乎每个客户端软件都需要做的.简单如"是否第一次打开"的BOOL值,大到游戏的进度和状态等数据,都需要进行本地持久化存储.这些数据的存储本质上就是写磁盘存文件,原始一点可以用iOS本身支持有NSFileManager这样的API,或者干脆C语言fwrite/fread,Cocoa Touch本身

iOS数据持久化方式分析

iOS数据持久化的方式一般为:plist文件写入.对象归档.SQLite数据库.CoreData. plist文件写入.对象归档一般用于小的数据量. SQLite数据库.CoreData则用于大的数据量. SQLite是一款轻型的数据库,是一种关系型数据库管理系统,他的设计目的是嵌入式设备中使用. SQLite占用资源非常低,非常适合移动设备中使用,而且是开源免费的 SQLite的数据库操作其实和常规的数据库操作流程是一样的: 1.打开数据库 sqlite3_open() 2.准备SQL语句,采

iOS -数据持久化方式-以真实项目讲解

前面已经讲解了SQLite,FMDB以及CoreData的基本操作和代码讲解(CoreData也在不断学习中,上篇博客也会不断更新中).本篇我们将讲述在实际开发中,所使用的iOS数据持久化的方式以及怎么会使用到这些方式,都会以本人实际开发的场景为例,大约需要花10-15分钟,欢迎大家指正. 一.前言 和大家说一个真实故事,前年我去美图面试(当时的技术仅仅是UI和接口的实现,并不注重很多底层实现和很多概念的原理,换句话说,就是真正的码农),过了技术第一轮和第二轮(前两年的也就是问问技术点的实现),

IOS数据持久化之归档NSKeyedArchiver

IOS数据持久化的方式分为三种: 属性列表 (自定义的Property List .NSUserDefaults) 归档 (NSKeyedArchiver) 数据库 (SQLite.Core Data.第三方类库等) 下面主要来介绍一个归档NSKeyedArchiver. 归档(又名序列化),把对象转为字节码,以文件的形式存储到磁盘上:程序运行过程中或者当再次重写打开程序的时候,可以通过解归档(反序列化)还原这些对象. 归档方式: 对Foundation框架中对象进行归档 对自定义的内容进行归档

iOS数据存储之CoreData

iOS中大量数据的储存一个是SqLite,另一个就是CoreData,CoreData允许程序员以面向对象的思维方式的方法去操作面向表的数据库 做过Java开发的对这个应该很熟悉,Java中的Hibernate跟CoreData就很相似 CoreData应该怎样使用呢? 第一步,新建工程后导入CoreData框架 第二部,创建CoreData的数据模型创建步骤如下 然后给你的model起个名字,创建完成后你会看到一个这个文件(相当于数据库文件) 点击这个文件,然后看下图 点击图中1,新建实体(类

iOS数据持久化之二——归档与设计可存储化的数据模型基类

iOS数据持久化之二--归档与设计可存储化的数据模型基类 一.引言 在上一篇博客中,我们介绍了用plist文件进行数据持久化的方法.虽然简单易用,但随着开发的深入,你会发现,这种方式还是有很大的局限性.试想,如果我们可以将用户的登录返回信息模型,游戏中角色的属性信息模型进行直接的持久化存取,那是不是非常爽的事,幸运的是,我们可以通过归档,来设计一个这样的数据模型. 二.先来精通归档吧 归档也是iOS提供给开发者的一种数据存储的方式,事实上,几乎所有的数据类型都可以通过归档来进行存取.其存储与读取

iOS开发笔记-swift实现iOS数据持久化之归档NSKeyedArchiver

IOS数据持久化的方式分为三种: 属性列表 (plist.NSUserDefaults) 归档 (NSKeyedArchiver) 数据库 (SQLite.Core Data.第三方类库等 归档(又名序列化),把对象转为字节码,以文件的形式存储到磁盘上:程序运行过程中或者当再次重写打开程序的时候,可以通过解归档(反序列化)还原这些对象.本文主要介绍swift实现iOS数据归档. 归档Foundation框架对象 func archiveData(){ var path: AnyObject=NS

数据持久化-CoreData、SQLite、FMDB

1.CoreData 1.1 CoreData概述 1)Core data 是数据持久存储的最佳方式 2)Core Data 基于model-view-controller(mvc)模式下,为创建分解的cocoa应用程序提供了一个灵活和强大的数据模型框架. 3)Core Data可以是你以图形界面的方式快速的定义app的数据模型,同时在你的代码中容易获取到它. Core Data提供了基础结构去处理常用的功能,例如:保存,恢复,撤销和重做,允许你在app中继续创建新的任务.在使用 Core Da