• 高级UIKit-05(CoreData)


    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 allocinitWithEntityName:@"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 allocinitWithEntityName:@"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 allocinitWithEntityName:@"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,修改

  • 相关阅读:
    python检测挖矿特征的几种方式
    python检测当前端口是否使用
    matlab界面UI设计资料
    python中struct.pack()函数和struct.unpack()函数
    网络编程:主机字节序和网络字节序
    【原创】python中文编码问题深入分析(三):python2.7文件读写中文编码问题
    【原创】python中文编码问题深入分析(二):print打印中文异常及显示乱码问题分析与解决
    ivew定制主题 less ^3.0 时报错 .bezierEasingMixin(); Inline JavaScript is not enabled. Is it set in your options?
    Vue子组件中 data 从props中动态更新数据
    Vue 自动吸顶
  • 原文地址:https://www.cnblogs.com/yangmx/p/3561257.html
Copyright © 2020-2023  润新知