# MagicalRecord 2.1

## 前言

CoreData是iOS开发中经常使用的数据持久化的技术。但其操作过程稍微繁琐,即使你只是实现简单的存取,不涉及请求优化,也要进行许多配置工作,代码量在动辄几十行,对新手来说也需要较大时间成本。

MagicalRecord是OC的一个库,协助方便CoreData的工作。其吸收了Ruby on Rails的Active Record模式,目标是:

* 简化Core Data相关代码
* 允许清晰,简单,单行获取
* 当需要优化请求的时候,仍然允许修改NSFetchRequest ## 安装 1、在 [github](https://github.com/magicalpanda/MagicalRecord) 上下载MagicalRecord 2、下载完成,将MagicalRecord 文件夹拖到Xcode中,添加进项目。添加CoreData framework。 3、在PCH文件中添加 **CoreData+MagicalRecord.h** 4、**Option:** 如果你在使用MagicalRecord方法的时候不想带**MR_** 前缀,e.g. 直接用**findAll** 代替 **MR_findAll**,就在PCH中在**CoreData+MagicalRecord.h**之前增加 **#defin MR_SHORTHAND** 即可。 ## 环境需求 MagicalRecord 需要的环境: * iOS 5.x 及以上, Mac OS 10.7及以上
* ARC iOS4,无ARC ,可以使用兼容版本,1.8.3 ## 用法 ### 创建Model 创建一个Model.xcdatamodeld ,添加一个Person Entity,添加age firstname lastname 三个属性。最后使用*Editor > Create NSManagedObject Subclass* ORM生成Person类。 ### 初始化 在AppDelegate中: - (void)applicationDidFinishLaunching:(NSNotification *)aNotification
{
[MagicalRecord setupCoreDataStackWithStoreNamed:@"Model.sqlite"];
// ...
return YES;
} - (void)applicationWillTerminate:(NSNotification *)aNotification
{
[MagicalRecord cleanUp];
} 这样就搞定初始化啦!! ### 增 Person *person = [Person MR_createEntity];
person.firstname = @"Frank";
person.lastname = @"Zhang";
person.age = @26;
[[NSManagedObjectContext MR_defaultContext] MR_save]; ### 查 //查找数据库中的所有Person。
NSArray *persons = [Person MR_findAll]; //查找所有的Person并按照first name排序。
NSArray *personsSorted = [Person MR_findAllSortedBy:@"firstname" ascending:YES]; //查找所有age属性为25的Person记录。
NSArray *personsAgeEuqals25 = [Person MR_findByAttribute:@"age" withValue:[NSNumber numberWithInt:25]]; //查找数据库中的第一条记录
Person *person = [Person MR_findFirst]; ### 改 Person *person = ...;//此处略
person.lastname = object;
[[NSManagedObjectContext MR_defaultContext] MR_save]; ### 删 Person *person = ...;//此处略
[person MR_deleteEntity];
[[NSManagedObjectContext MR_defaultContext] MR_save]; ### more * [MagicalRecord 官方](http://cocoadocs.org/docsets/MagicalRecord/2.1/)
* [Magical Record入门教程](http://furybean.github.io/blog/2012/08/01/magicalrecord-tutorial/)
* [Using CoreData with MagicalRecord](http://ablfx.com/blog/article/2)
* [Magical Record: how to make programming with Core Data pleasant](http://yannickloriot.com/2012/03/magicalrecord-how-to-make-programming-with-core-data-pleasant/#sthash.aPAOnVdF.dpbs)

iOS:OC Lib:MagicalRecord的更多相关文章

  1. iOS开发OC基础:Xcode中常见英文总结,OC常见英文错误

    在开发的过程中难免会遇到很多的错误,可是当看到系统给出的英文时,又不知道是什么意思.所以这篇文章总结了Xcode中常见的一些英文单词及词组,可以帮助初学的人快速了解给出的提示.多练习,就肯定能基本掌握 ...

  2. iOS开发基础:OC数组对象NSArray的常用方法

    本文介绍了OC的数组对象的基本方法的使用: 因为OC的数组中存储的为对象类型,所以我们可以新建一个Person类,通过Person生成对象进行操作. 其中Person.h中的代码为: [objc] v ...

  3. iOS响应式编程:ReactiveCocoa vs RxSwift 选谁好

    转载: iOS响应式编程:ReactiveCocoa vs RxSwift 选谁好 内容来自stack overflow的一个回答:ReactiveCocoa vs RxSwift – pros an ...

  4. DJI SDK iOS 开发之二:搭建主要的开发环境

    本文想介绍搭建主要的DJI SDK iOS下的开发环境,只是DJI官方已经给出了非常具体的执行其demo的教程.网址例如以下: https://dev.dji.com/cn/guide 我这里总结一下 ...

  5. iOS开发RunLoop学习:一:RunLoop简单介绍

    一:RunLoop的简单介绍 #import "ViewController.h" @interface ViewController () @end @implementatio ...

  6. 马蜂窝 iOS App 启动治理:回归用户体验

    增长.活跃.留存是移动 App 的常见核心指标,直接反映一款 App 甚至一个互联网公司运行的健康程度和发展动能.启动流程的体验决定了用户的第一印象,在一定程度上影响了用户活跃度和留存率.因此,确保启 ...

  7. lib/sqlalchemy/cextension/processors.c:10:20: 致命错误: Python.h:没有那个文件或目录

    本文地址:http://www.cnblogs.com/yhLinux/p/4063444.html $ sudo easy_install sqlalchemy [sudo] password fo ...

  8. VC连接mysql数据库错误:libmysql.lib : fatal error LNK1113: invalid machine 解决方法

    VC连接MySQL的配置过程在上一篇博文中,不过当你设置好,以为万事大吉的时候,运行却出现这个错误:libmysql.lib : fatal error LNK1113: invalid machin ...

  9. iOS Json转换模型库:YYModel

    iOS Json转换模型库:YYModel   其实在研究这个库之前,市面上已经有很多类似的模型序列化成JSON及反序列化库(如Mantle.MJExtension)了,推荐他只是因为他高端的性能和容 ...

随机推荐

  1. HTML5的touch事件

    HTML5中新添加了很多事件,但是由于他们的兼容问题不是很理想,应用实战性不是太强,所以在这里基本省略,咱们只分享应用广泛兼容不错的事件,日后随着兼容情况提升以后再陆续添加分享.今天为大家介绍的事件主 ...

  2. HashMap源码解析

    本文转载摘录自http://www.importnew.com/20386.html Java为数据结构中的映射定义了一个接口java.util.Map,此接口主要有四个常用的实现类,分别是HashM ...

  3. hibernate cascade=CascadeType.All

    因为时间关系,我在这里测试的环境是一对多的关系里面用到的注解方式的级联,网上也有很多贴子,我也看过了,但是呢,我还是自己总结一下吧,这觉得级联是单向的,不是双向的,意思就是说,我们在设置两个类的对象之 ...

  4. 嵌入式系统coredump设计

    阴沟翻船,马失前蹄,说明凡事皆有可能.自然,程序设计的再好,也会有crash的时候.开发期还还说,正式交付的系统crash自然更是难以承受的.无论何时,死一次就够了,得有方法查个水落石出. 几年前哥去 ...

  5. JAVA+HTML

    1.采用轻量级 JApplet . import java.awt.*; import javax.swing.JApplet; public class test extends JApplet{ ...

  6. Hadoop on Docker

    最初接触Docker是在2013年初,当时Docker才刚起步不久,知之甚少.在不到一年的时间里,Docker已经家喻户晓,成为时下最热门的云计算技术之一,出现了许多围绕docker的新兴产品(仅供参 ...

  7. 盘点国内网站常用的一些 CDN 公共库加速服务

    CDN公共库是指将常用的JS库存放在CDN节点,以方便广大开发者直接调用.与将JS库存放在服务器单机上相比,CDN公共库更加稳定.高速.一 般的CDN公共库都会包含全球所有最流行的开源JavaScri ...

  8. MSTest、NUnit、xUnit.net 属性和断言对照表

    MSTest.NUnit.xUnit.net 属性对照表 MSTest NUnit xUnit.net Comments [TestMethod] [Test] [Fact] Marks a test ...

  9. KALI LINUX WEB 渗透测试视频教程—第十九课-METASPLOIT基础

    原文链接:Kali Linux Web渗透测试视频教程—第十九课-metasploit基础 文/玄魂 目录 Kali Linux Web 渗透测试视频教程—第十九课-metasploit基础..... ...

  10. perl在命令行中打印单引号

    perl -e 'print "\'";'   这样写是不行的,这里直接执行会当作这命令未结束.反斜杠对符号做了转义,这样的命令解释成: perl -e 'print ';' (双 ...