• ios应用数据存储方式(Coredata)


    1.Core Data 是数据持久化存储的最佳方式
    2.数据最终的存储类型可以是:SQLite数据库,XML,二进制,内存里,或自定义数据类型
    3.好处:能够合理管理内存,避免使用sql的麻烦,高效
    4.注意CoreData的创建方式
     
    使用步骤 : 创建数据库- - -获取程序中的appdelegate对象 - - 然后就可以进行增查改删
    增加步骤 :1.初始化实体--2.增加数据 - -3.保存coredata数据
     
    查询步骤 : 1.创建一个空语句 - -2.创建要查询的实体--3.创建要查询的语句—--4.对返回的结果进行遍历
     
    Student.h
     
    #import <Foundation/Foundation.h>
    #import <CoreData/CoreData.h>
    @interface Student : NSManagedObject

    @property (nonatomic, retain) NSString * name;
    @property (nonatomic, retain) NSNumber * age;

    @end
    ======================================================
    Student.m
     
    #import "Student.h"
    @implementation Student

    @dynamic name;
    @dynamic age;

    @end
    ======================================================
    ViewController.m
     
    #import "ViewController.h"
    #import "AppDelegate.h"
    #import "Student.h"
    @interface ViewController ()

    @end

    @implementation ViewController

    - (void)viewDidLoad {
        [super viewDidLoad];
       
        //获取程序中的appdelegate对象,以便使用coredata的相关属性及方法(coredata的属性和方法在appdelegate.h中存着)
        AppDelegate * _appdelegate = [UIApplication sharedApplication].delegate;
       
        //coredata存储数据========增加数据=============
       
        //初始化实体,注意@“”里面是存放实体类名
        Student * s = [NSEntityDescription insertNewObjectForEntityForName:@"Student" inManagedObjectContext:_appdelegate.managedObjectContext];
        s.name = @"我是一把神经刀";
        s.age = [NSNumber numberWithInteger:22];
        [_appdelegate saveContext];//用来保存coredata数据
        NSLog(@"%@",NSHomeDirectory());
    //     NSLog(@"%@",s);
       
        Student * s10 = [NSEntityDescription insertNewObjectForEntityForName:@"Student" inManagedObjectContext:_appdelegate.managedObjectContext];
        s10.name = @"小莫";
        s10.age = [NSNumber numberWithInteger:30];
        [_appdelegate saveContext];
    //    NSLog(@"%@",s10);
      
      ==============查询数据===================
       
         //查询:只有123句时,代表查询所有,56结合,设置查询条件
       /*1*/ NSFetchRequest * request = [[NSFetchRequest alloc] init];//创建一个空语句
        /*2*/NSEntityDescription * en = [NSEntityDescription entityForName:@"Student" inManagedObjectContext:_appdelegate.managedObjectContext];//创建要查询的实体
       
        /*3*/[request setEntity:en];//创建要查询的语句
        /*4*/NSPredicate * p = [NSPredicate predicateWithFormat:@"age > %d",20];//这是查询条件
        /*5*/[request setPredicate:p];//将查询条件放入查询语句
      
        [_appdelegate saveContext];
        NSArray * arr1 = [_appdelegate.managedObjectContext executeFetchRequest:request error:nil];//执行查询语句,并且返回查询结果

        for (Student *s in arr1) {//-------对返回的结果进行遍历
             NSLog(@"%@,%@",s.name,s.age);
        }
       
        //==============修改数据=============
       
            NSArray * arr = [_appdelegate.managedObjectContext executeFetchRequest:request error:nil];//执行查询语句
            for (Student * s1 in arr) {
                s10.name = @"张三";//替换数据
                s10.age = [NSNumber numberWithInteger:32];
                NSLog(@"%@",s1.name);
        }
       
        //修改数据每次只能修改一个,想要修改多个,需要重新创建修改
        NSArray * arr2 = [_appdelegate.managedObjectContext executeFetchRequest:request error:nil];//执行查询语句
        for (Student * s2 in arr2) {
            s.name = @"张小花";//替换数据
            s.age = [NSNumber numberWithInteger:100];
            NSLog(@"%@",s2.name);
        }
     
        //    ============删除=====================
       
        NSFetchRequest *f1 = [[NSFetchRequest alloc] init];
        NSEntityDescription *en1 = [NSEntityDescription entityForName:@"Student" inManagedObjectContext:_appdelegate.managedObjectContext];
       
        [f1 setEntity:en1];
        NSPredicate *p1 = [NSPredicate predicateWithFormat:@"name = %@",@"王五"];
        [f1 setPredicate:p1];
       
       
        NSArray *rArr = [_appdelegate.managedObjectContext executeFetchRequest:f1 error:nil];
        for (Student *s in rArr) {
            [_appdelegate.managedObjectContext deleteObject:s];
        }
        NSFetchRequest *f2 = [[NSFetchRequest alloc] init];
        [f2 setEntity:en1];
       
        NSArray *r2 = [_appdelegate.managedObjectContext executeFetchRequest:f2 error:nil];
       
        NSLog(@"%@",r2);
  • 相关阅读:
    图的广度优先遍历,运用了数据结构,感觉非常好用,等会把深度优先遍历也用数据结构写一遍
    DFS之素数环问题
    图的深度优先遍历
    八皇后的详细解答,纯手打,求推荐!!!
    c++中priority_queue的用法
    c++中vector的用法
    #ifndef是什么意思????
    筛法求1000000以内素数个数---时间复杂度为o(n)
    C++中1/0和1/0.0的区别
    C++程序生成.exe文件,在文件夹中运行时闪现问题
  • 原文地址:https://www.cnblogs.com/yibadao/p/5022675.html
Copyright © 2020-2023  润新知