数据持久化(六)之Using CoreData with MagicalRecord

第五节里面,我介绍了CoreData的配置和基本的增删改查,可能很多人会觉得用它真繁琐.这里,我再介绍网上大神对它进行了人性化封装的第三方MagicalRecord,正如FMDB对sqlite进行了封装一样,MagicalRecord让你觉得用CoreData很方便.

@基本配置:

1.下载MagicalRecord,将里面的MagicalRecord文件夹拖入你的工程

2.确定你创建的工程没有勾选"Use Core Data"

3.导入CoreData.frame框架

4.在.pch文件中引入头文件"CoreData+MagicalRecord.h"(只能,必须在这里引用)

@具体操作:

1.初始化(在didFinishLaunchingWithOptions中)

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
    self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
    // Override point for customization after application launch.
    self.window.backgroundColor = [UIColor whiteColor];

    HMTRootViewController *rootVC = [[HMTRootViewController alloc] init];
    self.window.rootViewController = rootVC;

    //  初始化
    [MagicalRecord setupCoreDataStackWithStoreNamed:@"MT.sqlite"];

    [self.window makeKeyAndVisible];
    return YES;
}

- (void)applicationWillTerminate:(UIApplication *)application
{
    // Called when the application is about to terminate. Save data if appropriate. See also applicationDidEnterBackground:.
    [MagicalRecord cleanUp];
}

2.创建一个Model做测试,创建一个Person的Entity

3.增删改查具体操作

- (void)viewDidLoad
{
    [super viewDidLoad];
    // Do any additional setup after loading the view.

    //  初始化一个Person对象
    /**
     *  这里要注意:默认,xcdatamodeld实体描述表名(name)和类名(class)必须保持一致
     *  如果name和class不一致,实现MagicalRecord_MOGenerator协议中得entityName方法来改变
     @implementation NSManagedObject (MagicalRecord)

     + (NSString *) MR_entityName;
     {
     NSString *entityName;

     if ([self respondsToSelector:@selector(entityName)])
     {
     entityName = [self performSelector:@selector(entityName)];
     }

     if ([entityName length] == 0) {
     entityName = NSStringFromClass(self);
     }

     return entityName;
     }
     */
    Person *person = [Person MR_createEntity];
    person.name = @"HMT";
    person.sex = @"男";
    person.age = @25;

}

//  添加操作
- (void)addDataOperation{

    // 文档解释:For any entities to actually be saved / updated / deleted on disk call following method(增加,更新,删除 都要用这个方法来保存数据)
    [[NSManagedObjectContext MR_defaultContext] MR_saveToPersistentStoreAndWait];;
}

//  查询操作
- (void)selectDataOperation{

    //  find数据库中所有的人
    NSArray *peoples = [Person MR_findAll];
    //  find数据库中第一条记录
    Person *firPerson = [Person MR_findFirst];
    //  find数据库中所有name属性为"HMT"的人并按照年龄age排序
    NSArray *otherPeoples = [Person MR_findByAttribute:@"name" withValue:@"HMT" andOrderBy:@"age" ascending:YES];

}

//  更新操作
- (void)upDataOperation{

    //  选定要修改的人
    NSArray *persons = [Person MR_findByAttribute:@"name" withValue:@"HMT"];
    for (Person *person in persons) {
        person.name = @"WDQ";
    }
    [[NSManagedObjectContext MR_defaultContext] MR_saveToPersistentStoreAndWait];

}

//  删除操作
- (void)deleteDataOperation{

    //  delete数据库中所有人
    [Person MR_truncateAll];
    [[NSManagedObjectContext MR_defaultContext] MR_saveToPersistentStoreAndWait];

    //  根据条件delete特定的某个人
    NSArray *persons = [Person MR_findByAttribute:@"name" withValue:@"HMT"];
    for (Person *person in persons) {
        [person MR_deleteEntity];
    }
    [[NSManagedObjectContext MR_defaultContext] MR_saveToPersistentStoreAndWait];

}

4.额外配置(取消前缀名和不打印日志信息)

//If you want to omit the "MR_" prefix to all MagicalRecord realted method calls define following before importing the MagicalRecord header
#define MR_SHORTHAND

//Turn off MagicalRecord logging, again by defining following before header import
#define MR_ENABLE_ACTIVE_RECORD_LOGGING 0

@以上只是一些基本操作,其他可以自己去查看头文件

数据持久化(六)之Using CoreData with MagicalRecord

时间: 2024-08-28 08:40:42

数据持久化(六)之Using CoreData with MagicalRecord的相关文章

[Xcode10 实际操作]七、文件与数据-(14)数据持久化存储框架CoreData的使用:删除CoreData中的数据

本文将演示如何删除数据持久化对象. 在项目导航区,打开视图控制器的代码文件[ViewController.swift] 1 import UIKit 2 //引入数据持久化存储框架[CoreData] 3 import CoreData 4 5 class ViewController: UIViewController { 6 7 override func viewDidLoad() { 8 super.viewDidLoad() 9 // Do any additional setup a

高级数据持久化之coredata

一.概述 CoreData是一个用于数据持久化的框架,Core Data支持4种类型的数据存储:SQLiteStore, XMLStore, BinaryStore, InMemoryStore. 注意:CoreData大部分情况下是基于SQLite数据库进行数据管理的,所以以下全部是其基于SQLite数据库的内容,以后学到更多的管理方法在补充! Core Data是iOS5之后才出现的一个框架,它提供了对象-关系映射(ORM)的功能,即能够将OC对象转化成数据,保存在SQLite数据库文件中,

数据持久化-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

数据持久化CoreData()的使用

一.数据持久化CoreData数据库框架的优势  -  是对象(更适合面向对象编程) 收菜在IOS3.0版本的系统中出现,它允许按照实体- 属性- 值 模型组织数据,并以XML,二进制文件或者SOLite数据文件的格式持久化数据 二.数据持久化CoreData常见的类 实体管理类:NsManagedObiect 实体描述类:NSEntityDescription 数据管理器类:NSManagedObjectContext  - 临时的数据库(所有的操作全部在这里操作) 数据连接器类:NSPers

高级数据持久化 CoreData

一.ios3.0以后推出的  优点:不用写SQL语句 简化代码    以对象形式存储数据 更符合面向对象思想 CoreData允许按照 实体-属性-值 模型组织数据 以XML,二进制,SQLite 实体描述类:NSEntituDescripion创建对象 不用alloc init 数据连接器类(核心):NSPersistentStoreCoodinator 助理 数据管理器类(实际操作的临时数据库):NSManagedObjectContext(被管理对象的上下文) 数据模型器类(相当于数据库的

IOS学习:ios中的数据持久化初级(文件、xml、json、sqlite、CoreData)

IOS学习:ios中的数据持久化初级(文件.xml.json.sqlite.CoreData) 分类: ios开发学习2013-05-30 10:03 2316人阅读 评论(2) 收藏 举报 iOSXMLJSONSQLiteCoreData 一.文件操作 1.因为应用是在沙盒(Sandbox)中的,在文件读写权限上受到限制,只能在几个目录下读写文件: * Documents:应用中用户数据可以放在这里,iTunes备份和恢复的时候会包括此目录 * tmp:存放临时文件,iTunes不会备份和恢复

(转)iOS XML JSON SQLite CoreData 数据持久化

一.文件操作 1.因为应用是在沙盒(Sandbox)中的,在文件读写权限上受到限制,只能在几个目录下读写文件: * Documents:应用中用户数据可以放在这里,iTunes备份和恢复的时候会包括此目录 * tmp:存放临时文件,iTunes不会备份和恢复此目录,此目录下文件可能会在应用退出后删除 * Library/Caches:存放缓存文件,iTunes不会备份此目录,此目录下的文件不会在应用退出删除 2.相关方法:       # 使用NSSearchPathForDiretoriesI

iOS 通过CoreData实现数据持久化

iOS 通过CoreData实现数据持久化引言: Core Data 是 iOS 3.0 以后引入的数据持久化解决方案,其原理是对 SQLite 的封装,是开发者不需要接触 SQL 语句,就可以对数据库进行的操作. 其编码方式和原理结构方面较为特殊,本博文主要介绍在使用 Core Data 时遇到的各种问题以及对其核心原理进行解释. 参考资料: 1: iOS 教程:Core Data 数据持久性存储基础教程 http://www.dasheyin.com/ios_jiao_cheng_core_

CoreData数据持久化

CoreData介绍 CoreData是一门功能强大的数据持久化技术,位于SQLite数据库之上,它避免了SQL的复杂性,能让我们以更自然的方式与数据库进行交互.CoreData提供数据–OC对象映射关系来实现数据与对象管理,这样无需任何SQL语句就能操作他们. CoreData数据持久化框架是Cocoa API的一部分,?次在iOS5 版本的系统中出现,它允许按照实体-属性-值模型组织数据,并以XML.?进制文件或者SQLite数据?件的格式持久化数据 CoreData与SQLite进行对比