【day06_1_CoreDataPerson】:保存person对象到coreData数据库

保存大量数据时用CoreData保存到数据库,数据库会存在documents目录下

操作步骤:

1.创建空项目,勾上coreData

2.选中day06_1_CoreDataPerson.xcdatamo

添加entity实体,添加属性(attributes)

interger 16   int类型

interger 32   long类型

interger 16   long long类型

3.创建实体类,选择coreData选择最后一个,下一步。。。

4.创建storyboard,选择interface选中storyboard

5.选中项目名称选择main interface选中storyboard,删掉MXAppDelegate.m中创建window的代码,这时界面才能显示出来

添加数据到数据库:

// 创建appDelegate对象

MXAppDelegate *app = [UIApplication sharedApplication].delegate;

// 创建Person对象

Person *p = [NSEntityDescription insertNewObjectForEntityForName:@"Person" inManagedObjectContext:app.managedObjectContext];

p.name = @"李四";

p.age = [NSNumber numberWithInt:12];

从数据库查询数据:

// 创建appDelegate对象

MXAppDelegate *app = [UIApplication sharedApplication].delegate;

// 创建查询请求

NSFetchRequest *request = [[NSFetchRequest alloc] initWithEntityName:@"Person"];

// 执行查询请求 并返回结果

NSArray *personArray = [app.managedObjectContext executeFetchRequest:request error:nil];

// 输出

for (Person *p in personArray) {

NSLog(@"%@,%@",p.name,p.age);

}

删除数据:

// 创建appDelegate对象

MXAppDelegate *app = [UIApplication sharedApplication].delegate;

// 创建查询请求

NSFetchRequest *request = [[NSFetchRequest alloc] initWithEntityName:@"Person"];

// 执行查询请求 并返回结果

NSArray *personArray = [app.managedObjectContext executeFetchRequest:request error:nil];

for (Person *p in personArray) {

if ([p.name isEqualToString:@"张三"]) {

[app.managedObjectContext deleteObject:p]; // 删除数据

}

}

修改数据:

// 创建appDelegate对象

MXAppDelegate *app = [UIApplication sharedApplication].delegate;

// 创建查询请求

NSFetchRequest *request = [[NSFetchRequest alloc] initWithEntityName:@"Person"];

// 执行查询请求 并返回结果

NSArray *personArray = [app.managedObjectContext executeFetchRequest:request error:nil];

Person *p = personArray[0];

p.name = @"王五";

p.age = [NSNumber numberWithInt:23];

【day06_2_CoreDataTeam】:综合案例,使用数据库完成增删改查功能

添加和修改:

// 点击按钮后添加或修改数据

- (IBAction)clickedAction:(id)sender {

if (self.t) {

self.t.name = self.nameTF.text;

self.t.location = self.locationTF.text;

}else{

// 创建插入数据库对象

Team *team = [NSEntityDescription insertNewObjectForEntityForName:@"Team" inManagedObjectContext:self.app.managedObjectContext];

team.name = self.nameTF.text;

team.location = self.locationTF.text;

}

[self.app saveContext];

[self.navigationController popViewControllerAnimated:YES];

}

删除数据:

- (void)tableView:(UITableView *)tableView commitEditingStyle:(UITableViewCellEditingStyle)editingStyle forRowAtIndexPath:(NSIndexPath *)indexPath

{

if (editingStyle == UITableViewCellEditingStyleDelete) {

Team *t = self.teamArray[indexPath.row];

[self.app.managedObjectContext deleteObject:t]; // 删除

[self.app saveContext]; // 保存

[tableView deleteRowsAtIndexPaths:@[indexPath] withRowAnimation:UITableViewRowAnimationFade];

}

else if (editingStyle == UITableViewCellEditingStyleInsert) {

// Create a new instance of the appropriate class, insert it into the array, and add a new row to the table view

}

}

总结:使用数据库完成增删改要保存数据,查不需要。

综合练习:

游戏需求,

1.第一次运行直接进到添加用户的页面

2.从添加用户页面 选择某一个用户的话,返回首页,并显示欢迎这个用户

3.点击排行榜,跳转到新的页面,此页面显示每一个用户的最高分

4.用户列表页面可以进行删除和添加用户

5.将本次游戏得分和当前用户的最高分做比较如果这次高就覆盖得分

【PlayPlaneGame】:打飞机游戏

案例总结:如果要对从数据库取出的数组进行操作,应该让该数组为可变数组。

修改快捷键使用command+,打开,选择key bindings,修改

高级UIKit-05(CoreData)的更多相关文章

  1. Linux高级编程--05.文件读写

    缓冲I/O和非缓冲I/O 文件读写主要牵涉到了如下五个操作:打开.关闭.读.写.定位.在Linux系统中,提供了两套API, 一套是C标准API:fopen.fclose.fread.fwrite.f ...

  2. Java入门 - 高级教程 - 05.网络编程

    原文地址:http://www.work100.net/training/java-networking.html 更多教程:光束云 - 免费课程 网络编程 序号 文内章节 视频 1 概述 2 Soc ...

  3. iOS-数据持久化-CoreData

    CoreData详解 介绍: 在Cocoa环境下,如果你想使用数据库(如sqlite),你可以使用sql语句的方式通过相关的工具类进行数据库的直接操作.当然你也可以通过别人封装之后的一些简单框架,使得 ...

  4. Playground 你不知道的小技巧, CoreData 的使用

    Playground 的出现无疑是大大的提高了开发效率,可以节省大量的编译时间. 这里介绍在 Playground 中使用 CoreData 的小技巧. 我们新建一个工程 iOS 项目工程. 点击Fi ...

  5. [Swift]创建CoreData的两种方式

    一.CoreData介绍 CoreData主要分为两部分: 上层是模型层,模型层有NSManagedObjectContext上下文管理着, 底层则是由SQLite实现的持久化部分,通过NSPersi ...

  6. swift3.0:CoreData的使用

    一.介绍 CoreData不像slqite3那样编写代码繁琐,同时避免了使用了SQL语句的麻烦,也可以回避使用C语言的语法,降低了iOS开发的技术门槛. CoreData可降低开发成本,提高代码质量. ...

  7. Core Data数据操作

    1.建立学生实体,插入100条数据 2.按条件查询学生数据 3.统计学生信息 4.修改学生信息 5.删除学生数据 import UIKit import CoreData class ViewCont ...

  8. CoreDataManager-Swift版-兼容iOS10以前的版本

    import UIKit import CoreData // coredata管理器 class CoreDataManager: NSObject { // 单例 static let share ...

  9. iOS数据持久化-OC

    沙盒详解 1.IOS沙盒机制 IOS应用程序只能在为该改程序创建的文件系统中读取文件,不可以去其它地方访问,此区域被成为沙盒,所以所有的非代码文件都要保存在此,例如图像,图标,声音,映像,属性列表,文 ...

  10. Swift学习--微博的基础框架搭建

    学习如何使用Swift写项目 一.搭建微博项目的主框架 1.1--搭建功能模块 1.2--在 AppDelegate 中的 didFinishLaunchingWithOptions 函数,设置启动控 ...

随机推荐

  1. 转载 js判断浏览器

    $scope.identifyBrowser= function () { var userAgent = navigator.userAgent, rMsie = /(msie\s|trident. ...

  2. VPN连接在遇到飞鱼星设备时可能出现的疑难问题

    在连接VPN设备时,设置都是正常的.在

  3. TexturePacker 介绍

    TexturePacker这个词从字面来说就是Texture(纹理) + Packer(打包). 它是一款把若干资源图片拼接为一张大图的工具.它由一位叫做Andreas Loew的老外开发的 :). ...

  4. 快速构建ASP.NET MVC Admin主页

    前言 后台开发人员一般不喜欢调样式,搞半天样式出不来,还要考虑各种浏览器兼容,费心费力不讨好,还好互联网时代有大量的资源共享,避免我们从零开始,现在就来看怎么快速构建一个ASP.NET MVC后台管理 ...

  5. char*与char[]

    char *s1="hello";   // 指向常量区 char s2[]="hello";   // 指向数组的内存空间 char *s1 的s1是指针,指 ...

  6. debian下samba配置

    debian下samba配置  http://blog.chinaunix.net/uid-2282111-id-2113216.html 服务器端配置过程:1. apt-get install sa ...

  7. [LeetCode]题解(python):022-Generate Parentheses

    题目来源: https://leetcode.com/problems/generate-parentheses/ 题意分析: 题目输入一个整型n,输出n对小括号配对的所有可能性.比如说,如果输入3, ...

  8. SSL/TLS原理详解

    本文大部分整理自网络,相关文章请见文后参考. 关于证书授权中心CA以及数字证书等概念,请移步 OpenSSL 与 SSL 数字证书概念贴 ,如果你想快速自建CA然后签发数字证书,请移步 基于OpenS ...

  9. swift:打造你自己的折线图

    看到苹果Health里的折线图了吗.我们就是要打造一个这样的折线图.没看过的请看下图. 我们的主题在于折线图本身.其他的包括步数.日平均值等描述类的内容这里就不涉及了. 首先观察,这个图种包含些什么组 ...

  10. MySQL 讨厌哪种类型的查询

    ㈠ 任何查询都讨厌             只要是查询.MySQL都讨厌.执行查询最快的方式就是不去执行        缓存为王.比如Redis或者memcache               ㈡ 查 ...