使用CoreData [1]

使用CoreData [1]

本篇教程能教你从无开始接触CoreData,包括新建工程,创建出实体,增删改查样样都有,属于使用CoreData最初级教程.

 

1. 创建带有CoreData的工程项目

 

2. 添加一个实体类

 

3. 创建出实体类

 

4. 创建对象,保存对象,执行代码

以下是验证结果:

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
    NSLog(@"%@", NSHomeDirectory());

    // 实体描述信息
    NSEntityDescription *description = \
        [NSEntityDescription entityForName:@"Student"
                    inManagedObjectContext:[self managedObjectContext]];

    // 初始化对象
    Student *student = [[Student alloc] initWithEntity:description
                        insertIntoManagedObjectContext:[self managedObjectContext]];
    student.name     = @"YouXianMing";
    student.age      = [NSNumber numberWithInt:26];

    // 保存对象
    [self saveContext];

    return YES;
}

这样就实现了存储对象.

 

5. 重复上面的步骤存储5个对象.

 

6. 遍历出所有的对象

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
    // 设定要查询的实体
    NSFetchRequest *fetch = [NSFetchRequest fetchRequestWithEntityName:@"Student"];

    // 取出查询结果
    NSArray *students = [[self managedObjectContext] executeFetchRequest:fetch error:nil];

    // 遍历
    [students enumerateObjectsUsingBlock:^(id obj, NSUInteger idx, BOOL *stop) {
        Student *student = obj;
        NSLog(@"%@ %@", student.age, student.name);
    }];

    return YES;
}

7. 删除一个对象

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
    // 设定要查询的实体
    NSFetchRequest *fetch = [NSFetchRequest fetchRequestWithEntityName:@"Student"];

    // 取出查询结果
    NSArray *students = [[self managedObjectContext] executeFetchRequest:fetch error:nil];

    // 遍历
    [students enumerateObjectsUsingBlock:^(id obj, NSUInteger idx, BOOL *stop) {
        Student *student = obj;

        // 找到匹配的数据,删除之
        if ([student.name isEqualToString:@"QiuLiang"])
        {
            [[self managedObjectContext] deleteObject:student];
        }
    }];

    // 存储
    [self saveContext];

    // 遍历
    [students enumerateObjectsUsingBlock:^(id obj, NSUInteger idx, BOOL *stop) {
        Student *student = obj;

        NSLog(@"%@ %@", student.age, student.name);
    }];

    return YES;
}

8. 修改一个对象

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
    // 设定要查询的实体
    NSFetchRequest *fetch = [NSFetchRequest fetchRequestWithEntityName:@"Student"];

    // 取出查询结果
    NSArray *students = [[self managedObjectContext] executeFetchRequest:fetch error:nil];

    // 遍历
    [students enumerateObjectsUsingBlock:^(id obj, NSUInteger idx, BOOL *stop) {
        Student *student = obj;

        // 找到匹配的数据,修改之
        if ([student.name isEqualToString:@"YouXianMing"])
        {
            student.age = [NSNumber numberWithInt:100];
        }
    }];

    // 存储
    [self saveContext];

    // 遍历
    [students enumerateObjectsUsingBlock:^(id obj, NSUInteger idx, BOOL *stop) {
        Student *student = obj;

        NSLog(@"%@ %@", student.age, student.name);
    }];

    return YES;
}

9. 根据谓词查找出实体的方法请自行百度脑补,这里不赘述了.

时间: 2024-09-07 22:26:40

使用CoreData [1]的相关文章

xcode-在Xcode6.1与6.2版本使用CoreData遇到的属性更新问题

问题描述 在Xcode6.1与6.2版本使用CoreData遇到的属性更新问题 在新版Xcode中使用CoreData时, 创建model中实体的实体类时, 新生成的类会包含model中实体的属性, 但我将model中的实体属性更新后重新生成的实体类中的属性就不更新了, 这中情况怎么办 解决方案 参考:http://blog.csdn.net/zsomsom/article/details/9246827

使用开源库 MagicalRecord 操作 CoreData

MagicalRecord  https://github.com/magicalpanda/MagicalRecord 注意:  MagicalRecord 在 ARC 下运作,Core Data 是 ORM 方案,据说带来的麻烦比好处多,且 Core Data 建立的表没有主键,但对于对数据库没有性能要求,进行简单的数据操作完全够用,能简化无数的代码量. MagicalRecord In software engineering, the active record pattern is a

CoreData的增删改查概述

近几天一直在使用 CoreData, 以前觉得它是一门高深的技术, 等自己用了之后才觉得,它是那么的平易近人. 一: 首先我们要在创建应用程序的时候勾选 UseCoreData 选项, 当然也可以自己后期创建. 系统会生成如下AppDelegate.h的文件 #import <UIKit/UIKit.h> @interface AppDelegate : UIResponder <UIApplicationDelegate> @property (strong, nonatomic

使用coredata和sqlite

首先,coredata和sqlite的概念不同,core为对象周期管理,而sqlite为dbms. 下面的讨论以使用core data来做数据持久化并使用sqlite做backend存储的情况为前提. 使用方便性.实际上,一个成熟的工程中一定是对数据持久化进行了封装的,因此底层使用的到底是core data还是sqlite,不应该被业务逻辑开发者关心.因此,即使习惯写SQL查询的人,也应该避免在业务逻辑中直接编写SQL语句. 存储性能,在写入性能上,因为都是使用的sqlite格式作为磁盘存储格式

iOS中CoreData数据管理系列一——初识CoreData

iOS中CoreData数据管理系列一--初识CoreData 一.何为CoreData     CoreData是一个专门用来管理数据的框架,其在性能与书写方便上都有很大的优势,在数据库管理方面,apple强烈推荐开发者使用CoreData框架,在apple的官方文档中称,使用CoreData框架可以减少开发者50%--70%的代码量,这虽然有些夸张,但由此可见,CoreData的确十分强大. 二.设计数据模型     在iOS开发中,时常使用SQL数据库对大量的表结构数据进行处理,但是SQL

ios开发-Swift2.0如何使用CoreData多线程频繁执行数据库读写

问题描述 Swift2.0如何使用CoreData多线程频繁执行数据库读写 在一个采用Swift2.0编写的IOS APP项目中,需要后台用蓝牙实时获取数据并保存到本地SQLite中进行处理.目前有两个后台线程A和B,A每秒获取一下蓝牙数据,将其保存到数据库中:B定时循环执行遍历数据库,对没有处理的数据进行处理,并更新记录的标志位说明已经处理过.项目采用了CoreData,但每当执行4到5分钟后会报异常造成崩溃.刚接触IOS开发,对多线程数据持久化理解不足,希望有经验的大牛指点一下有什么办法或者

iOS开发之表视图爱上CoreData

在接触到CoreData时,感觉就是苹果封装的一个ORM.CoreData负责在Model的实体和sqllite建立关联,数据模型的实体类就相当于Java中的JavaBean, 而CoreData的功能和JavaEE中的Hibernate的功能类似,最基本是两者都有通过对实体的操作来实现对数据库的CURD操作.CoreData中的上下文(managedObjectContext)就相当于Hibernate中的session对象, CoreData中的save操作就和Hibernate中的comm

iOS中CoreData数据管理系列二——CoreData框架中三个重要的类

iOS中CoreData数据管理系列二--CoreData框架中三个重要的类 一.引言     在上一篇博客中,介绍了iOS中使用CoreData框架设计数据模型的相关步骤.CoreData框架中通过相关的类将数据--数据模型--开发者无缝的衔接起来.NSManagedObjectModel对应数据模型,即上篇博客中我们创建的.xcdatamodeld文件:NSPersistentStoreCoordinator相当于数据库与数据模型之间的桥接器,通过NSPersistentStoreCoord

ios coredata数据操作-iOS coredata数据操作

问题描述 iOS coredata数据操作 各位大大求指导:用coredata做个新闻类的APP,每次从服务器上请求的数据和本地coredata里面的数据进行对比(有一个专门id来区别每条信息),如果有相同的id就不对本地数据进行更新,如果本地coredata的数据库里面没有从网上请求最新的id,删除本地数据,插入新id的数据. 最终结果就是本地数据库信息条数不会变化,求指导

iOS基础教程:在建好的项目中加入CoreData[转]

这几天在做一个ios的小项目,项目中需要对数据进行基本的增删改查操作.于是就想用一把CoreData.但在创建项目初期,没有包含进CoreData.于是就在已建好的项目中加入CoreData.由于第一次用CoreData,各方面还不是很熟悉,在网上爬文,找到了一篇关于这方面的文章(http://www.iteye.com/topic/1017633).于是,自己在这篇文章的基础上经过一天的研究,特把自己出错的地方进行简单的总结.并把步骤完善一下. 1.如果想在已建好的项目中加入CoreData,