MagicalRecord入门教程

来源:互联网 发布:c语言无限循环 编辑:程序博客网 时间:2024/05/04 12:45

Magical Record是什么

在Cocoa中存在一种技术叫Core Data,用来对数据进行持久化,类似于Java世界中的Hibernate。在新建Cocoa Application/iOS Application的向导中,有一个选项是要不要使用Core Data,当启用以后你会发现在AppDelegate.m中添加了大量与Core Data相关的代码,但是你对大部分代码不知所以然。

Magical Record的出现在一定程度上缓解了这个问题,降低了Core Data的使用门槛。

Magical Record借用了Ruby on Rails中的Active Record模式,使得你可以非常容易的添加、查找、删除数据。Google了一下,没有发现中文相关教程,遂把自己的试用过程记录下来,写成此篇文章。

安装

  1. 新建一个项目,注意在向导中不要勾选Core Data
  2. 下载Magical Record,并把MagicalRecord目录拖拽到工程中,记得勾选copy items into group folder。
  3. 为项目添加CoreData FrameWork。(点击工程根节点,然后依次Targets > Build Phases > Link Binary With Libraries > + > CoreData.framework > Add)。
  4. 添加Magical Record的头文件到*-Prefix.pch:

    <ol class="linenums"><li class="L0"><ol class="linenums" style="margin: 0px; padding: 0px 0px 0px 27px; border: 0px; vertical-align: baseline; list-style-position: outside; line-height: 1.714285714; color: rgb(174, 174, 174);"><li value="1" class="L0" style="margin: 0px; padding: 0px; border: 0px; vertical-align: baseline; line-height: 16px; list-style: decimal;"><span style="margin: 0px; padding: 0px; border: 0px; vertical-align: baseline; background-color: rgb(255, 255, 255);"><code class="prettyprint" style="margin: 0px; padding: 0px; border: none; font-size: 0.9em; vertical-align: baseline; font-family: Menlo, Monaco, 'Andale Mono', 'lucida console', 'Courier New', monospace; line-height: 2; display: block;"><span class="pln" style="margin: 0px; padding: 0px; border: 0px; vertical-align: baseline; color: rgb(255, 255, 255);"><span class="pln"> </span></span><span class="com" style="margin: 0px; padding: 0px; border: 0px; vertical-align: baseline; color: rgb(135, 206, 235);"><span class="com">#import "CoreData+MagicalRecord.h"</span></span></code></span></li></ol></li></ol>

创建模型文件

下面创建一个名为Person的模型,有age、firstname、lastname三个字段。

  1. 创建一个名为Model的模型文件。 (File > New File… > Core Data > Data Model)
  2. 点击左下角的Add Entity,更改Entity的名字为Person。
  3. 为Entity添加三个Attribute:age(Integer16)、firstname(string)、lastname(string)。
  4. 点击Editor > Create NSManagedObject Subclass… > Create创建模型文件对应的类。

使用Magical Record

初始化Magical Record

首先在AppDelegate.m中添加以下代码对Magical Record进行初始化:

<ol class="linenums"><li class="L0"><ol class="linenums" style="margin: 0px; padding: 0px 0px 0px 27px; border: 0px; vertical-align: baseline; list-style-position: outside; line-height: 1.714285714; color: rgb(174, 174, 174);"><li value="1" class="L0" style="margin: 0px; padding: 0px; border: 0px; vertical-align: baseline; line-height: 16px; list-style: decimal;"><span style="margin: 0px; padding: 0px; border: 0px; vertical-align: baseline; background-color: rgb(255, 255, 255);"><code class="prettyprint" style="margin: 0px; padding: 0px; border: none; font-size: 0.9em; vertical-align: baseline; font-family: Menlo, Monaco, 'Andale Mono', 'lucida console', 'Courier New', monospace; line-height: 2; display: block;"><span class="pun" style="margin: 0px; padding: 0px; border: 0px; vertical-align: baseline; color: rgb(255, 255, 255);"><span class="pun">-</span></span><span class="pln" style="margin: 0px; padding: 0px; border: 0px; vertical-align: baseline; color: rgb(255, 255, 255);"><span class="pln"> </span></span><span class="pun" style="margin: 0px; padding: 0px; border: 0px; vertical-align: baseline; color: rgb(255, 255, 255);"><span class="pun">(</span></span><span class="kwd" style="margin: 0px; padding: 0px; border: 0px; vertical-align: baseline; color: rgb(240, 230, 140); font-weight: bold;"><span class="kwd">void</span></span><span class="pun" style="margin: 0px; padding: 0px; border: 0px; vertical-align: baseline; color: rgb(255, 255, 255);"><span class="pun">)</span></span><span class="pln" style="margin: 0px; padding: 0px; border: 0px; vertical-align: baseline; color: rgb(255, 255, 255);"><span class="pln">applicationDidFinishLaunching</span></span><span class="pun" style="margin: 0px; padding: 0px; border: 0px; vertical-align: baseline; color: rgb(255, 255, 255);"><span class="pun">:(</span></span><span class="typ" style="margin: 0px; padding: 0px; border: 0px; vertical-align: baseline; color: rgb(152, 251, 152);"><span class="typ">NSNotification</span></span><span class="pln" style="margin: 0px; padding: 0px; border: 0px; vertical-align: baseline; color: rgb(255, 255, 255);"><span class="pln"> </span></span><span class="pun" style="margin: 0px; padding: 0px; border: 0px; vertical-align: baseline; color: rgb(255, 255, 255);"><span class="pun">*)</span></span><span class="pln" style="margin: 0px; padding: 0px; border: 0px; vertical-align: baseline; color: rgb(255, 255, 255);"><span class="pln">aNotification</span></span></code></span></li><li class="L1" style="margin: 0px; padding: 0px; border: 0px; vertical-align: baseline; line-height: 16px; list-style: decimal;"><span style="margin: 0px; padding: 0px; border: 0px; vertical-align: baseline; background-color: rgb(255, 255, 255);"><code class="prettyprint" style="margin: 0px; padding: 0px; border: none; font-size: 0.9em; vertical-align: baseline; font-family: Menlo, Monaco, 'Andale Mono', 'lucida console', 'Courier New', monospace; line-height: 2; display: block;"><span class="pun" style="margin: 0px; padding: 0px; border: 0px; vertical-align: baseline; color: rgb(255, 255, 255);"><span class="pun">{</span></span></code></span></li><li class="L2" style="margin: 0px; padding: 0px; border: 0px; vertical-align: baseline; line-height: 16px; list-style: decimal;"><span style="margin: 0px; padding: 0px; border: 0px; vertical-align: baseline; background-color: rgb(255, 255, 255);"><code class="prettyprint" style="margin: 0px; padding: 0px; border: none; font-size: 0.9em; vertical-align: baseline; font-family: Menlo, Monaco, 'Andale Mono', 'lucida console', 'Courier New', monospace; line-height: 2; display: block;"><span class="pln" style="margin: 0px; padding: 0px; border: 0px; vertical-align: baseline; color: rgb(255, 255, 255);"><span class="pln">    </span></span><span class="pun" style="margin: 0px; padding: 0px; border: 0px; vertical-align: baseline; color: rgb(255, 255, 255);"><span class="pun">[</span></span><span class="typ" style="margin: 0px; padding: 0px; border: 0px; vertical-align: baseline; color: rgb(152, 251, 152);"><span class="typ">MagicalRecord</span></span><span class="pln" style="margin: 0px; padding: 0px; border: 0px; vertical-align: baseline; color: rgb(255, 255, 255);"><span class="pln"> setupCoreDataStackWithStoreNamed</span></span><span class="pun" style="margin: 0px; padding: 0px; border: 0px; vertical-align: baseline; color: rgb(255, 255, 255);"><span class="pun">:@</span></span><span class="str" style="margin: 0px; padding: 0px; border: 0px; vertical-align: baseline; color: rgb(255, 160, 160);"><span class="str">"MyDatabase.sqlite"</span></span><span class="pun" style="margin: 0px; padding: 0px; border: 0px; vertical-align: baseline; color: rgb(255, 255, 255);"><span class="pun">];</span></span></code></span></li><li class="L3" style="margin: 0px; padding: 0px; border: 0px; vertical-align: baseline; line-height: 16px; list-style: decimal;"><span style="margin: 0px; padding: 0px; border: 0px; vertical-align: baseline; background-color: rgb(255, 255, 255);"><code class="prettyprint" style="margin: 0px; padding: 0px; border: none; font-size: 0.9em; vertical-align: baseline; font-family: Menlo, Monaco, 'Andale Mono', 'lucida console', 'Courier New', monospace; line-height: 2; display: block;"><span class="pln" style="margin: 0px; padding: 0px; border: 0px; vertical-align: baseline; color: rgb(255, 255, 255);"><span class="pln">    </span></span><span class="com" style="margin: 0px; padding: 0px; border: 0px; vertical-align: baseline; color: rgb(135, 206, 235);"><span class="com">// ...</span></span></code></span></li><li class="L4" style="margin: 0px; padding: 0px; border: 0px; vertical-align: baseline; line-height: 16px; list-style: decimal;"><span style="margin: 0px; padding: 0px; border: 0px; vertical-align: baseline; background-color: rgb(255, 255, 255);"><code class="prettyprint" style="margin: 0px; padding: 0px; border: none; font-size: 0.9em; vertical-align: baseline; font-family: Menlo, Monaco, 'Andale Mono', 'lucida console', 'Courier New', monospace; line-height: 2; display: block;"><span class="pln" style="margin: 0px; padding: 0px; border: 0px; vertical-align: baseline; color: rgb(255, 255, 255);"><span class="com">    </span></span><span class="kwd" style="margin: 0px; padding: 0px; border: 0px; vertical-align: baseline; color: rgb(240, 230, 140); font-weight: bold;"><span class="com">return</span></span><span class="pln" style="margin: 0px; padding: 0px; border: 0px; vertical-align: baseline; color: rgb(255, 255, 255);"><span class="com"> YES</span></span><span class="pun" style="margin: 0px; padding: 0px; border: 0px; vertical-align: baseline; color: rgb(255, 255, 255);"><span class="com">;</span></span></code></span></li><li class="L5" style="margin: 0px; padding: 0px; border: 0px; vertical-align: baseline; line-height: 16px; list-style: decimal;"><span style="margin: 0px; padding: 0px; border: 0px; vertical-align: baseline; background-color: rgb(255, 255, 255);"><code class="prettyprint" style="margin: 0px; padding: 0px; border: none; font-size: 0.9em; vertical-align: baseline; font-family: Menlo, Monaco, 'Andale Mono', 'lucida console', 'Courier New', monospace; line-height: 2; display: block;"><span class="pun" style="margin: 0px; padding: 0px; border: 0px; vertical-align: baseline; color: rgb(255, 255, 255);"><span class="com">}</span></span></code></span></li><li class="L6" style="margin: 0px; padding: 0px; border: 0px; vertical-align: baseline; line-height: 16px; list-style: decimal;"><span style="margin: 0px; padding: 0px; border: 0px; vertical-align: baseline; background-color: rgb(255, 255, 255);"><code class="prettyprint" style="margin: 0px; padding: 0px; border: none; font-size: 0.9em; vertical-align: baseline; font-family: Menlo, Monaco, 'Andale Mono', 'lucida console', 'Courier New', monospace; line-height: 2; display: block;"></code></span></li><li class="L7" style="margin: 0px; padding: 0px; border: 0px; vertical-align: baseline; line-height: 16px; list-style: decimal;"><span style="margin: 0px; padding: 0px; border: 0px; vertical-align: baseline; background-color: rgb(255, 255, 255);"><code class="prettyprint" style="margin: 0px; padding: 0px; border: none; font-size: 0.9em; vertical-align: baseline; font-family: Menlo, Monaco, 'Andale Mono', 'lucida console', 'Courier New', monospace; line-height: 2; display: block;"><span class="pun" style="margin: 0px; padding: 0px; border: 0px; vertical-align: baseline; color: rgb(255, 255, 255);"><span class="com">-</span></span><span class="pln" style="margin: 0px; padding: 0px; border: 0px; vertical-align: baseline; color: rgb(255, 255, 255);"><span class="com"> </span></span><span class="pun" style="margin: 0px; padding: 0px; border: 0px; vertical-align: baseline; color: rgb(255, 255, 255);"><span class="com">(</span></span><span class="kwd" style="margin: 0px; padding: 0px; border: 0px; vertical-align: baseline; color: rgb(240, 230, 140); font-weight: bold;"><span class="com">void</span></span><span class="pun" style="margin: 0px; padding: 0px; border: 0px; vertical-align: baseline; color: rgb(255, 255, 255);"><span class="com">)</span></span><span class="pln" style="margin: 0px; padding: 0px; border: 0px; vertical-align: baseline; color: rgb(255, 255, 255);"><span class="com">applicationWillTerminate</span></span><span class="pun" style="margin: 0px; padding: 0px; border: 0px; vertical-align: baseline; color: rgb(255, 255, 255);"><span class="com">:(</span></span><span class="typ" style="margin: 0px; padding: 0px; border: 0px; vertical-align: baseline; color: rgb(152, 251, 152);"><span class="com">NSNotification</span></span><span class="pln" style="margin: 0px; padding: 0px; border: 0px; vertical-align: baseline; color: rgb(255, 255, 255);"><span class="com"> </span></span><span class="pun" style="margin: 0px; padding: 0px; border: 0px; vertical-align: baseline; color: rgb(255, 255, 255);"><span class="com">*)</span></span><span class="pln" style="margin: 0px; padding: 0px; border: 0px; vertical-align: baseline; color: rgb(255, 255, 255);"><span class="com">aNotification</span></span></code></span></li><li class="L8" style="margin: 0px; padding: 0px; border: 0px; vertical-align: baseline; line-height: 16px; list-style: decimal;"><span style="margin: 0px; padding: 0px; border: 0px; vertical-align: baseline; background-color: rgb(255, 255, 255);"><code class="prettyprint" style="margin: 0px; padding: 0px; border: none; font-size: 0.9em; vertical-align: baseline; font-family: Menlo, Monaco, 'Andale Mono', 'lucida console', 'Courier New', monospace; line-height: 2; display: block;"><span class="pun" style="margin: 0px; padding: 0px; border: 0px; vertical-align: baseline; color: rgb(255, 255, 255);"><span class="com">{</span></span></code></span></li><li class="L9" style="margin: 0px; padding: 0px; border: 0px; vertical-align: baseline; line-height: 16px; list-style: decimal;"><span style="margin: 0px; padding: 0px; border: 0px; vertical-align: baseline; background-color: rgb(255, 255, 255);"><code class="prettyprint" style="margin: 0px; padding: 0px; border: none; font-size: 0.9em; vertical-align: baseline; font-family: Menlo, Monaco, 'Andale Mono', 'lucida console', 'Courier New', monospace; line-height: 2; display: block;"><span class="pln" style="margin: 0px; padding: 0px; border: 0px; vertical-align: baseline; color: rgb(255, 255, 255);"><span class="com">    </span></span><span class="pun" style="margin: 0px; padding: 0px; border: 0px; vertical-align: baseline; color: rgb(255, 255, 255);"><span class="com">[</span></span><span class="typ" style="margin: 0px; padding: 0px; border: 0px; vertical-align: baseline; color: rgb(152, 251, 152);"><span class="com">MagicalRecord</span></span><span class="pln" style="margin: 0px; padding: 0px; border: 0px; vertical-align: baseline; color: rgb(255, 255, 255);"><span class="com"> cleanUp</span></span><span class="pun" style="margin: 0px; padding: 0px; border: 0px; vertical-align: baseline; color: rgb(255, 255, 255);"><span class="com">];</span></span></code></span></li><li class="L0" style="margin: 0px; padding: 0px; border: 0px; vertical-align: baseline; line-height: 16px; list-style: decimal;"><span style="margin: 0px; padding: 0px; border: 0px; vertical-align: baseline; background-color: rgb(255, 255, 255);"><code class="prettyprint" style="margin: 0px; padding: 0px; border: none; font-size: 0.9em; vertical-align: baseline; font-family: Menlo, Monaco, 'Andale Mono', 'lucida console', 'Courier New', monospace; line-height: 2; display: block;"><span class="pun" style="margin: 0px; padding: 0px; border: 0px; vertical-align: baseline; color: rgb(255, 255, 255);"><span class="com">}</span></span></code></span></li></ol></li></ol>

是否比Core Data默认的初始化简洁多了呢?

查询记录

使用Person的MR_findAll、MR_findAllSortedBy、MR_findByAttribute等方法可以查询Person:

<ol class="linenums"><li class="L0"><ol class="linenums" style="margin: 0px; padding: 0px 0px 0px 27px; border: 0px; vertical-align: baseline; list-style-position: outside; line-height: 1.714285714; color: rgb(174, 174, 174);"><li value="1" class="L0" style="margin: 0px; padding: 0px; border: 0px; vertical-align: baseline; line-height: 16px; list-style: decimal;"><span style="margin: 0px; padding: 0px; border: 0px; vertical-align: baseline; background-color: rgb(255, 255, 255);"><code class="prettyprint" style="margin: 0px; padding: 0px; border: none; font-size: 0.9em; vertical-align: baseline; font-family: Menlo, Monaco, 'Andale Mono', 'lucida console', 'Courier New', monospace; line-height: 2; display: block;"><span class="com" style="margin: 0px; padding: 0px; border: 0px; vertical-align: baseline; color: rgb(135, 206, 235);"><span class="com">//查找数据库中的所有Person。</span></span></code></span></li><li class="L1" style="margin: 0px; padding: 0px; border: 0px; vertical-align: baseline; line-height: 16px; list-style: decimal;"><span style="margin: 0px; padding: 0px; border: 0px; vertical-align: baseline; background-color: rgb(255, 255, 255);"><code class="prettyprint" style="margin: 0px; padding: 0px; border: none; font-size: 0.9em; vertical-align: baseline; font-family: Menlo, Monaco, 'Andale Mono', 'lucida console', 'Courier New', monospace; line-height: 2; display: block;"><span class="typ" style="margin: 0px; padding: 0px; border: 0px; vertical-align: baseline; color: rgb(152, 251, 152);"><span class="com">NSArray</span></span><span class="pln" style="margin: 0px; padding: 0px; border: 0px; vertical-align: baseline; color: rgb(255, 255, 255);"><span class="com"> </span></span><span class="pun" style="margin: 0px; padding: 0px; border: 0px; vertical-align: baseline; color: rgb(255, 255, 255);"><span class="com">*</span></span><span class="pln" style="margin: 0px; padding: 0px; border: 0px; vertical-align: baseline; color: rgb(255, 255, 255);"><span class="com">persons </span></span><span class="pun" style="margin: 0px; padding: 0px; border: 0px; vertical-align: baseline; color: rgb(255, 255, 255);"><span class="com">=</span></span><span class="pln" style="margin: 0px; padding: 0px; border: 0px; vertical-align: baseline; color: rgb(255, 255, 255);"><span class="com"> </span></span><span class="pun" style="margin: 0px; padding: 0px; border: 0px; vertical-align: baseline; color: rgb(255, 255, 255);"><span class="com">[</span></span><span class="typ" style="margin: 0px; padding: 0px; border: 0px; vertical-align: baseline; color: rgb(152, 251, 152);"><span class="com">Person</span></span><span class="pln" style="margin: 0px; padding: 0px; border: 0px; vertical-align: baseline; color: rgb(255, 255, 255);"><span class="com"> MR_findAll</span></span><span class="pun" style="margin: 0px; padding: 0px; border: 0px; vertical-align: baseline; color: rgb(255, 255, 255);"><span class="com">];</span></span></code></span></li><li class="L2" style="margin: 0px; padding: 0px; border: 0px; vertical-align: baseline; line-height: 16px; list-style: decimal;"><span style="margin: 0px; padding: 0px; border: 0px; vertical-align: baseline; background-color: rgb(255, 255, 255);"><code class="prettyprint" style="margin: 0px; padding: 0px; border: none; font-size: 0.9em; vertical-align: baseline; font-family: Menlo, Monaco, 'Andale Mono', 'lucida console', 'Courier New', monospace; line-height: 2; display: block;"></code></span></li><li class="L3" style="margin: 0px; padding: 0px; border: 0px; vertical-align: baseline; line-height: 16px; list-style: decimal;"><span style="margin: 0px; padding: 0px; border: 0px; vertical-align: baseline; background-color: rgb(255, 255, 255);"><code class="prettyprint" style="margin: 0px; padding: 0px; border: none; font-size: 0.9em; vertical-align: baseline; font-family: Menlo, Monaco, 'Andale Mono', 'lucida console', 'Courier New', monospace; line-height: 2; display: block;"><span class="com" style="margin: 0px; padding: 0px; border: 0px; vertical-align: baseline; color: rgb(135, 206, 235);"><span class="com">//查找所有的Person并按照first name排序。</span></span></code></span></li><li class="L4" style="margin: 0px; padding: 0px; border: 0px; vertical-align: baseline; line-height: 16px; list-style: decimal;"><span style="margin: 0px; padding: 0px; border: 0px; vertical-align: baseline; background-color: rgb(255, 255, 255);"><code class="prettyprint" style="margin: 0px; padding: 0px; border: none; font-size: 0.9em; vertical-align: baseline; font-family: Menlo, Monaco, 'Andale Mono', 'lucida console', 'Courier New', monospace; line-height: 2; display: block;"><span class="typ" style="margin: 0px; padding: 0px; border: 0px; vertical-align: baseline; color: rgb(152, 251, 152);"><span class="com">NSArray</span></span><span class="pln" style="margin: 0px; padding: 0px; border: 0px; vertical-align: baseline; color: rgb(255, 255, 255);"><span class="com"> </span></span><span class="pun" style="margin: 0px; padding: 0px; border: 0px; vertical-align: baseline; color: rgb(255, 255, 255);"><span class="com">*</span></span><span class="pln" style="margin: 0px; padding: 0px; border: 0px; vertical-align: baseline; color: rgb(255, 255, 255);"><span class="com">personsSorted </span></span><span class="pun" style="margin: 0px; padding: 0px; border: 0px; vertical-align: baseline; color: rgb(255, 255, 255);"><span class="com">=</span></span><span class="pln" style="margin: 0px; padding: 0px; border: 0px; vertical-align: baseline; color: rgb(255, 255, 255);"><span class="com"> </span></span><span class="pun" style="margin: 0px; padding: 0px; border: 0px; vertical-align: baseline; color: rgb(255, 255, 255);"><span class="com">[</span></span><span class="typ" style="margin: 0px; padding: 0px; border: 0px; vertical-align: baseline; color: rgb(152, 251, 152);"><span class="com">Person</span></span><span class="pln" style="margin: 0px; padding: 0px; border: 0px; vertical-align: baseline; color: rgb(255, 255, 255);"><span class="com"> MR_findAllSortedBy</span></span><span class="pun" style="margin: 0px; padding: 0px; border: 0px; vertical-align: baseline; color: rgb(255, 255, 255);"><span class="com">:@</span></span><span class="str" style="margin: 0px; padding: 0px; border: 0px; vertical-align: baseline; color: rgb(255, 160, 160);"><span class="com">"firstname"</span></span><span class="pln" style="margin: 0px; padding: 0px; border: 0px; vertical-align: baseline; color: rgb(255, 255, 255);"><span class="com"> ascending</span></span><span class="pun" style="margin: 0px; padding: 0px; border: 0px; vertical-align: baseline; color: rgb(255, 255, 255);"><span class="com">:</span></span><span class="pln" style="margin: 0px; padding: 0px; border: 0px; vertical-align: baseline; color: rgb(255, 255, 255);"><span class="com">YES</span></span><span class="pun" style="margin: 0px; padding: 0px; border: 0px; vertical-align: baseline; color: rgb(255, 255, 255);"><span class="com">];</span></span></code></span></li><li class="L5" style="margin: 0px; padding: 0px; border: 0px; vertical-align: baseline; line-height: 16px; list-style: decimal;"><span style="margin: 0px; padding: 0px; border: 0px; vertical-align: baseline; background-color: rgb(255, 255, 255);"><code class="prettyprint" style="margin: 0px; padding: 0px; border: none; font-size: 0.9em; vertical-align: baseline; font-family: Menlo, Monaco, 'Andale Mono', 'lucida console', 'Courier New', monospace; line-height: 2; display: block;"></code></span></li><li class="L6" style="margin: 0px; padding: 0px; border: 0px; vertical-align: baseline; line-height: 16px; list-style: decimal;"><span style="margin: 0px; padding: 0px; border: 0px; vertical-align: baseline; background-color: rgb(255, 255, 255);"><code class="prettyprint" style="margin: 0px; padding: 0px; border: none; font-size: 0.9em; vertical-align: baseline; font-family: Menlo, Monaco, 'Andale Mono', 'lucida console', 'Courier New', monospace; line-height: 2; display: block;"><span class="com" style="margin: 0px; padding: 0px; border: 0px; vertical-align: baseline; color: rgb(135, 206, 235);"><span class="com">//查找所有age属性为25的Person记录。</span></span></code></span></li><li class="L7" style="margin: 0px; padding: 0px; border: 0px; vertical-align: baseline; line-height: 16px; list-style: decimal;"><span style="margin: 0px; padding: 0px; border: 0px; vertical-align: baseline; background-color: rgb(255, 255, 255);"><code class="prettyprint" style="margin: 0px; padding: 0px; border: none; font-size: 0.9em; vertical-align: baseline; font-family: Menlo, Monaco, 'Andale Mono', 'lucida console', 'Courier New', monospace; line-height: 2; display: block;"><span class="typ" style="margin: 0px; padding: 0px; border: 0px; vertical-align: baseline; color: rgb(152, 251, 152);"><span class="com">NSArray</span></span><span class="pln" style="margin: 0px; padding: 0px; border: 0px; vertical-align: baseline; color: rgb(255, 255, 255);"><span class="com"> </span></span><span class="pun" style="margin: 0px; padding: 0px; border: 0px; vertical-align: baseline; color: rgb(255, 255, 255);"><span class="com">*</span></span><span class="pln" style="margin: 0px; padding: 0px; border: 0px; vertical-align: baseline; color: rgb(255, 255, 255);"><span class="com">personsAgeEuqals25   </span></span><span class="pun" style="margin: 0px; padding: 0px; border: 0px; vertical-align: baseline; color: rgb(255, 255, 255);"><span class="com">=</span></span><span class="pln" style="margin: 0px; padding: 0px; border: 0px; vertical-align: baseline; color: rgb(255, 255, 255);"><span class="com"> </span></span><span class="pun" style="margin: 0px; padding: 0px; border: 0px; vertical-align: baseline; color: rgb(255, 255, 255);"><span class="com">[</span></span><span class="typ" style="margin: 0px; padding: 0px; border: 0px; vertical-align: baseline; color: rgb(152, 251, 152);"><span class="com">Person</span></span><span class="pln" style="margin: 0px; padding: 0px; border: 0px; vertical-align: baseline; color: rgb(255, 255, 255);"><span class="com"> MR_findByAttribute</span></span><span class="pun" style="margin: 0px; padding: 0px; border: 0px; vertical-align: baseline; color: rgb(255, 255, 255);"><span class="com">:@</span></span><span class="str" style="margin: 0px; padding: 0px; border: 0px; vertical-align: baseline; color: rgb(255, 160, 160);"><span class="com">"age"</span></span><span class="pln" style="margin: 0px; padding: 0px; border: 0px; vertical-align: baseline; color: rgb(255, 255, 255);"><span class="com"> withValue</span></span><span class="pun" style="margin: 0px; padding: 0px; border: 0px; vertical-align: baseline; color: rgb(255, 255, 255);"><span class="com">:[</span></span><span class="typ" style="margin: 0px; padding: 0px; border: 0px; vertical-align: baseline; color: rgb(152, 251, 152);"><span class="com">NSNumber</span></span><span class="pln" style="margin: 0px; padding: 0px; border: 0px; vertical-align: baseline; color: rgb(255, 255, 255);"><span class="com"> numberWithInt</span></span><span class="pun" style="margin: 0px; padding: 0px; border: 0px; vertical-align: baseline; color: rgb(255, 255, 255);"><span class="com">:</span></span><span class="lit" style="margin: 0px; padding: 0px; border: 0px; vertical-align: baseline; color: rgb(205, 92, 92);"><span class="com">25</span></span><span class="pun" style="margin: 0px; padding: 0px; border: 0px; vertical-align: baseline; color: rgb(255, 255, 255);"><span class="com">]];</span></span></code></span></li><li class="L8" style="margin: 0px; padding: 0px; border: 0px; vertical-align: baseline; line-height: 16px; list-style: decimal;"><span style="margin: 0px; padding: 0px; border: 0px; vertical-align: baseline; background-color: rgb(255, 255, 255);"><code class="prettyprint" style="margin: 0px; padding: 0px; border: none; font-size: 0.9em; vertical-align: baseline; font-family: Menlo, Monaco, 'Andale Mono', 'lucida console', 'Courier New', monospace; line-height: 2; display: block;"></code></span></li><li class="L9" style="margin: 0px; padding: 0px; border: 0px; vertical-align: baseline; line-height: 16px; list-style: decimal;"><span style="margin: 0px; padding: 0px; border: 0px; vertical-align: baseline; background-color: rgb(255, 255, 255);"><code class="prettyprint" style="margin: 0px; padding: 0px; border: none; font-size: 0.9em; vertical-align: baseline; font-family: Menlo, Monaco, 'Andale Mono', 'lucida console', 'Courier New', monospace; line-height: 2; display: block;"><span class="com" style="margin: 0px; padding: 0px; border: 0px; vertical-align: baseline; color: rgb(135, 206, 235);"><span class="com">//查找数据库中的第一条记录</span></span></code></span></li><li class="L0" style="margin: 0px; padding: 0px; border: 0px; vertical-align: baseline; line-height: 16px; list-style: decimal;"><span style="margin: 0px; padding: 0px; border: 0px; vertical-align: baseline; background-color: rgb(255, 255, 255);"><code class="prettyprint" style="margin: 0px; padding: 0px; border: none; font-size: 0.9em; vertical-align: baseline; font-family: Menlo, Monaco, 'Andale Mono', 'lucida console', 'Courier New', monospace; line-height: 2; display: block;"><span class="typ" style="margin: 0px; padding: 0px; border: 0px; vertical-align: baseline; color: rgb(152, 251, 152);"><span class="com">Person</span></span><span class="pln" style="margin: 0px; padding: 0px; border: 0px; vertical-align: baseline; color: rgb(255, 255, 255);"><span class="com"> </span></span><span class="pun" style="margin: 0px; padding: 0px; border: 0px; vertical-align: baseline; color: rgb(255, 255, 255);"><span class="com">*</span></span><span class="pln" style="margin: 0px; padding: 0px; border: 0px; vertical-align: baseline; color: rgb(255, 255, 255);"><span class="com">person </span></span><span class="pun" style="margin: 0px; padding: 0px; border: 0px; vertical-align: baseline; color: rgb(255, 255, 255);"><span class="com">=</span></span><span class="pln" style="margin: 0px; padding: 0px; border: 0px; vertical-align: baseline; color: rgb(255, 255, 255);"><span class="com"> </span></span><span class="pun" style="margin: 0px; padding: 0px; border: 0px; vertical-align: baseline; color: rgb(255, 255, 255);"><span class="com">[</span></span><span class="typ" style="margin: 0px; padding: 0px; border: 0px; vertical-align: baseline; color: rgb(152, 251, 152);"><span class="com">Person</span></span><span class="pln" style="margin: 0px; padding: 0px; border: 0px; vertical-align: baseline; color: rgb(255, 255, 255);"><span class="com"> MR_findFirst</span></span><span class="pun" style="margin: 0px; padding: 0px; border: 0px; vertical-align: baseline; color: rgb(255, 255, 255);"><span class="com">];</span></span></code></span></li></ol></li></ol>

添加记录

使用Person的MR_createEntity方法可以方便的创建一个Person,需要使用[[NSManagedObjectContext MR_defaultContext] MR_save]来进行保存哦:

<ol class="linenums"><li class="L0"><ol class="linenums" style="margin: 0px; padding: 0px 0px 0px 27px; border: 0px; vertical-align: baseline; list-style-position: outside; line-height: 1.714285714; color: rgb(174, 174, 174);"><li value="1" class="L0" style="margin: 0px; padding: 0px; border: 0px; vertical-align: baseline; line-height: 16px; list-style: decimal;"><span style="margin: 0px; padding: 0px; border: 0px; vertical-align: baseline; background-color: rgb(255, 255, 255);"><code class="prettyprint" style="margin: 0px; padding: 0px; border: none; font-size: 0.9em; vertical-align: baseline; font-family: Menlo, Monaco, 'Andale Mono', 'lucida console', 'Courier New', monospace; line-height: 2; display: block;"><span class="typ" style="margin: 0px; padding: 0px; border: 0px; vertical-align: baseline; color: rgb(152, 251, 152);"><span class="typ">Person</span></span><span class="pln" style="margin: 0px; padding: 0px; border: 0px; vertical-align: baseline; color: rgb(255, 255, 255);"><span class="pln"> </span></span><span class="pun" style="margin: 0px; padding: 0px; border: 0px; vertical-align: baseline; color: rgb(255, 255, 255);"><span class="pun">*</span></span><span class="pln" style="margin: 0px; padding: 0px; border: 0px; vertical-align: baseline; color: rgb(255, 255, 255);"><span class="pln">person </span></span><span class="pun" style="margin: 0px; padding: 0px; border: 0px; vertical-align: baseline; color: rgb(255, 255, 255);"><span class="pun">=</span></span><span class="pln" style="margin: 0px; padding: 0px; border: 0px; vertical-align: baseline; color: rgb(255, 255, 255);"><span class="pln"> </span></span><span class="pun" style="margin: 0px; padding: 0px; border: 0px; vertical-align: baseline; color: rgb(255, 255, 255);"><span class="pun">[</span></span><span class="typ" style="margin: 0px; padding: 0px; border: 0px; vertical-align: baseline; color: rgb(152, 251, 152);"><span class="typ">Person</span></span><span class="pln" style="margin: 0px; padding: 0px; border: 0px; vertical-align: baseline; color: rgb(255, 255, 255);"><span class="pln"> MR_createEntity</span></span><span class="pun" style="margin: 0px; padding: 0px; border: 0px; vertical-align: baseline; color: rgb(255, 255, 255);"><span class="pun">];</span></span></code></span></li><li class="L1" style="margin: 0px; padding: 0px; border: 0px; vertical-align: baseline; line-height: 16px; list-style: decimal;"><span style="margin: 0px; padding: 0px; border: 0px; vertical-align: baseline; background-color: rgb(255, 255, 255);"><code class="prettyprint" style="margin: 0px; padding: 0px; border: none; font-size: 0.9em; vertical-align: baseline; font-family: Menlo, Monaco, 'Andale Mono', 'lucida console', 'Courier New', monospace; line-height: 2; display: block;"><span class="pln" style="margin: 0px; padding: 0px; border: 0px; vertical-align: baseline; color: rgb(255, 255, 255);"><span class="pln">person</span></span><span class="pun" style="margin: 0px; padding: 0px; border: 0px; vertical-align: baseline; color: rgb(255, 255, 255);"><span class="pun">.</span></span><span class="pln" style="margin: 0px; padding: 0px; border: 0px; vertical-align: baseline; color: rgb(255, 255, 255);"><span class="pln">firstname </span></span><span class="pun" style="margin: 0px; padding: 0px; border: 0px; vertical-align: baseline; color: rgb(255, 255, 255);"><span class="pun">=</span></span><span class="pln" style="margin: 0px; padding: 0px; border: 0px; vertical-align: baseline; color: rgb(255, 255, 255);"><span class="pln"> </span></span><span class="pun" style="margin: 0px; padding: 0px; border: 0px; vertical-align: baseline; color: rgb(255, 255, 255);"><span class="pun">@</span></span><span class="str" style="margin: 0px; padding: 0px; border: 0px; vertical-align: baseline; color: rgb(255, 160, 160);"><span class="str">"Frank"</span></span><span class="pun" style="margin: 0px; padding: 0px; border: 0px; vertical-align: baseline; color: rgb(255, 255, 255);"><span class="pun">;</span></span></code></span></li><li class="L2" style="margin: 0px; padding: 0px; border: 0px; vertical-align: baseline; line-height: 16px; list-style: decimal;"><span style="margin: 0px; padding: 0px; border: 0px; vertical-align: baseline; background-color: rgb(255, 255, 255);"><code class="prettyprint" style="margin: 0px; padding: 0px; border: none; font-size: 0.9em; vertical-align: baseline; font-family: Menlo, Monaco, 'Andale Mono', 'lucida console', 'Courier New', monospace; line-height: 2; display: block;"><span class="pln" style="margin: 0px; padding: 0px; border: 0px; vertical-align: baseline; color: rgb(255, 255, 255);"><span class="pln">person</span></span><span class="pun" style="margin: 0px; padding: 0px; border: 0px; vertical-align: baseline; color: rgb(255, 255, 255);"><span class="pun">.</span></span><span class="pln" style="margin: 0px; padding: 0px; border: 0px; vertical-align: baseline; color: rgb(255, 255, 255);"><span class="pln">lastname </span></span><span class="pun" style="margin: 0px; padding: 0px; border: 0px; vertical-align: baseline; color: rgb(255, 255, 255);"><span class="pun">=</span></span><span class="pln" style="margin: 0px; padding: 0px; border: 0px; vertical-align: baseline; color: rgb(255, 255, 255);"><span class="pln"> </span></span><span class="pun" style="margin: 0px; padding: 0px; border: 0px; vertical-align: baseline; color: rgb(255, 255, 255);"><span class="pun">@</span></span><span class="str" style="margin: 0px; padding: 0px; border: 0px; vertical-align: baseline; color: rgb(255, 160, 160);"><span class="str">"Zhang"</span></span><span class="pun" style="margin: 0px; padding: 0px; border: 0px; vertical-align: baseline; color: rgb(255, 255, 255);"><span class="pun">;</span></span></code></span></li><li class="L3" style="margin: 0px; padding: 0px; border: 0px; vertical-align: baseline; line-height: 16px; list-style: decimal;"><span style="margin: 0px; padding: 0px; border: 0px; vertical-align: baseline; background-color: rgb(255, 255, 255);"><code class="prettyprint" style="margin: 0px; padding: 0px; border: none; font-size: 0.9em; vertical-align: baseline; font-family: Menlo, Monaco, 'Andale Mono', 'lucida console', 'Courier New', monospace; line-height: 2; display: block;"><span class="pln" style="margin: 0px; padding: 0px; border: 0px; vertical-align: baseline; color: rgb(255, 255, 255);"><span class="pln">person</span></span><span class="pun" style="margin: 0px; padding: 0px; border: 0px; vertical-align: baseline; color: rgb(255, 255, 255);"><span class="pun">.</span></span><span class="pln" style="margin: 0px; padding: 0px; border: 0px; vertical-align: baseline; color: rgb(255, 255, 255);"><span class="pln">age </span></span><span class="pun" style="margin: 0px; padding: 0px; border: 0px; vertical-align: baseline; color: rgb(255, 255, 255);"><span class="pun">=</span></span><span class="pln" style="margin: 0px; padding: 0px; border: 0px; vertical-align: baseline; color: rgb(255, 255, 255);"><span class="pln"> </span></span><span class="pun" style="margin: 0px; padding: 0px; border: 0px; vertical-align: baseline; color: rgb(255, 255, 255);"><span class="pun">@</span></span><span class="lit" style="margin: 0px; padding: 0px; border: 0px; vertical-align: baseline; color: rgb(205, 92, 92);"><span class="lit">26</span></span><span class="pun" style="margin: 0px; padding: 0px; border: 0px; vertical-align: baseline; color: rgb(255, 255, 255);"><span class="pun">;</span></span><span class="com" style="margin: 0px; padding: 0px; border: 0px; vertical-align: baseline; color: rgb(135, 206, 235);"><span class="com">//此处使用了LLVM的新特性,XCode 4.4可用</span></span></code></span></li><li class="L4" style="margin: 0px; padding: 0px; border: 0px; vertical-align: baseline; line-height: 16px; list-style: decimal;"><span style="margin: 0px; padding: 0px; border: 0px; vertical-align: baseline; background-color: rgb(255, 255, 255);"><code class="prettyprint" style="margin: 0px; padding: 0px; border: none; font-size: 0.9em; vertical-align: baseline; font-family: Menlo, Monaco, 'Andale Mono', 'lucida console', 'Courier New', monospace; line-height: 2; display: block;"><span class="pun" style="margin: 0px; padding: 0px; border: 0px; vertical-align: baseline; color: rgb(255, 255, 255);"><span class="com">[[</span></span><span class="typ" style="margin: 0px; padding: 0px; border: 0px; vertical-align: baseline; color: rgb(152, 251, 152);"><span class="com">NSManagedObjectContext</span></span><span class="pln" style="margin: 0px; padding: 0px; border: 0px; vertical-align: baseline; color: rgb(255, 255, 255);"><span class="com"> MR_defaultContext</span></span><span class="pun" style="margin: 0px; padding: 0px; border: 0px; vertical-align: baseline; color: rgb(255, 255, 255);"><span class="com">]</span></span><span class="pln" style="margin: 0px; padding: 0px; border: 0px; vertical-align: baseline; color: rgb(255, 255, 255);"><span class="com"> MR_save</span></span><span class="pun" style="margin: 0px; padding: 0px; border: 0px; vertical-align: baseline; color: rgb(255, 255, 255);"><span class="com">];</span></span></code></span></li></ol></li></ol>

更新记录

直接对数据库中查找到的Person进行赋值,然后使用NSManagedObjectContext保存即可更新Person:

<ol class="linenums"><li class="L0"><ol class="linenums" style="margin: 0px; padding: 0px 0px 0px 27px; border: 0px; vertical-align: baseline; list-style-position: outside; line-height: 1.714285714; color: rgb(174, 174, 174);"><li value="1" class="L0" style="margin: 0px; padding: 0px; border: 0px; vertical-align: baseline; line-height: 16px; list-style: decimal;"><span style="margin: 0px; padding: 0px; border: 0px; vertical-align: baseline; background-color: rgb(255, 255, 255);"><code class="prettyprint" style="margin: 0px; padding: 0px; border: none; font-size: 0.9em; vertical-align: baseline; font-family: Menlo, Monaco, 'Andale Mono', 'lucida console', 'Courier New', monospace; line-height: 2; display: block;"><span class="typ" style="margin: 0px; padding: 0px; border: 0px; vertical-align: baseline; color: rgb(152, 251, 152);"><span class="typ">Person</span></span><span class="pln" style="margin: 0px; padding: 0px; border: 0px; vertical-align: baseline; color: rgb(255, 255, 255);"><span class="pln"> </span></span><span class="pun" style="margin: 0px; padding: 0px; border: 0px; vertical-align: baseline; color: rgb(255, 255, 255);"><span class="pun">*</span></span><span class="pln" style="margin: 0px; padding: 0px; border: 0px; vertical-align: baseline; color: rgb(255, 255, 255);"><span class="pln">person </span></span><span class="pun" style="margin: 0px; padding: 0px; border: 0px; vertical-align: baseline; color: rgb(255, 255, 255);"><span class="pun">=</span></span><span class="pln" style="margin: 0px; padding: 0px; border: 0px; vertical-align: baseline; color: rgb(255, 255, 255);"><span class="pln"> </span></span><span class="pun" style="margin: 0px; padding: 0px; border: 0px; vertical-align: baseline; color: rgb(255, 255, 255);"><span class="pun">...;</span></span><span class="com" style="margin: 0px; padding: 0px; border: 0px; vertical-align: baseline; color: rgb(135, 206, 235);"><span class="com">//此处略</span></span></code></span></li><li class="L1" style="margin: 0px; padding: 0px; border: 0px; vertical-align: baseline; line-height: 16px; list-style: decimal;"><span style="margin: 0px; padding: 0px; border: 0px; vertical-align: baseline; background-color: rgb(255, 255, 255);"><code class="prettyprint" style="margin: 0px; padding: 0px; border: none; font-size: 0.9em; vertical-align: baseline; font-family: Menlo, Monaco, 'Andale Mono', 'lucida console', 'Courier New', monospace; line-height: 2; display: block;"><span class="pln" style="margin: 0px; padding: 0px; border: 0px; vertical-align: baseline; color: rgb(255, 255, 255);"><span class="com">person</span></span><span class="pun" style="margin: 0px; padding: 0px; border: 0px; vertical-align: baseline; color: rgb(255, 255, 255);"><span class="com">.</span></span><span class="pln" style="margin: 0px; padding: 0px; border: 0px; vertical-align: baseline; color: rgb(255, 255, 255);"><span class="com">lastname </span></span><span class="pun" style="margin: 0px; padding: 0px; border: 0px; vertical-align: baseline; color: rgb(255, 255, 255);"><span class="com">=</span></span><span class="pln" style="margin: 0px; padding: 0px; border: 0px; vertical-align: baseline; color: rgb(255, 255, 255);"><span class="com"> </span></span><span class="kwd" style="margin: 0px; padding: 0px; border: 0px; vertical-align: baseline; color: rgb(240, 230, 140); font-weight: bold;"><span class="com">object</span></span><span class="pun" style="margin: 0px; padding: 0px; border: 0px; vertical-align: baseline; color: rgb(255, 255, 255);"><span class="com">;</span></span><span class="pln" style="margin: 0px; padding: 0px; border: 0px; vertical-align: baseline; color: rgb(255, 255, 255);"><span class="com">        </span></span></code></span></li><li class="L2" style="margin: 0px; padding: 0px; border: 0px; vertical-align: baseline; line-height: 16px; list-style: decimal;"><span style="margin: 0px; padding: 0px; border: 0px; vertical-align: baseline; background-color: rgb(255, 255, 255);"><code class="prettyprint" style="margin: 0px; padding: 0px; border: none; font-size: 0.9em; vertical-align: baseline; font-family: Menlo, Monaco, 'Andale Mono', 'lucida console', 'Courier New', monospace; line-height: 2; display: block;"><span class="pun" style="margin: 0px; padding: 0px; border: 0px; vertical-align: baseline; color: rgb(255, 255, 255);"><span class="com">[[</span></span><span class="typ" style="margin: 0px; padding: 0px; border: 0px; vertical-align: baseline; color: rgb(152, 251, 152);"><span class="com">NSManagedObjectContext</span></span><span class="pln" style="margin: 0px; padding: 0px; border: 0px; vertical-align: baseline; color: rgb(255, 255, 255);"><span class="com"> MR_defaultContext</span></span><span class="pun" style="margin: 0px; padding: 0px; border: 0px; vertical-align: baseline; color: rgb(255, 255, 255);"><span class="com">]</span></span><span class="pln" style="margin: 0px; padding: 0px; border: 0px; vertical-align: baseline; color: rgb(255, 255, 255);"><span class="com"> MR_save</span></span><span class="pun" style="margin: 0px; padding: 0px; border: 0px; vertical-align: baseline; color: rgb(255, 255, 255);"><span class="com">];</span></span></code></span></li></ol></li></ol>

删除记录

使用Person的MR_deleteEntity可以方便的删除Person,模式和添加更新一致:

<ol class="linenums"><li class="L0"><ol class="linenums" style="margin: 0px; padding: 0px 0px 0px 27px; border: 0px; vertical-align: baseline; list-style-position: outside; line-height: 1.714285714; color: rgb(174, 174, 174);"><li value="1" class="L0" style="margin: 0px; padding: 0px; border: 0px; vertical-align: baseline; line-height: 16px; list-style: decimal;"><span style="margin: 0px; padding: 0px; border: 0px; vertical-align: baseline; background-color: rgb(255, 255, 255);"><code class="prettyprint" style="margin: 0px; padding: 0px; border: none; font-size: 0.9em; vertical-align: baseline; font-family: Menlo, Monaco, 'Andale Mono', 'lucida console', 'Courier New', monospace; line-height: 2; display: block;"><span class="typ" style="margin: 0px; padding: 0px; border: 0px; vertical-align: baseline; color: rgb(152, 251, 152);"><span class="typ">Person</span></span><span class="pln" style="margin: 0px; padding: 0px; border: 0px; vertical-align: baseline; color: rgb(255, 255, 255);"><span class="pln"> </span></span><span class="pun" style="margin: 0px; padding: 0px; border: 0px; vertical-align: baseline; color: rgb(255, 255, 255);"><span class="pun">*</span></span><span class="pln" style="margin: 0px; padding: 0px; border: 0px; vertical-align: baseline; color: rgb(255, 255, 255);"><span class="pln">person </span></span><span class="pun" style="margin: 0px; padding: 0px; border: 0px; vertical-align: baseline; color: rgb(255, 255, 255);"><span class="pun">=</span></span><span class="pln" style="margin: 0px; padding: 0px; border: 0px; vertical-align: baseline; color: rgb(255, 255, 255);"><span class="pln"> </span></span><span class="pun" style="margin: 0px; padding: 0px; border: 0px; vertical-align: baseline; color: rgb(255, 255, 255);"><span class="pun">...;</span></span><span class="com" style="margin: 0px; padding: 0px; border: 0px; vertical-align: baseline; color: rgb(135, 206, 235);"><span class="com">//此处略</span></span></code></span></li><li class="L1" style="margin: 0px; padding: 0px; border: 0px; vertical-align: baseline; line-height: 16px; list-style: decimal;"><span style="margin: 0px; padding: 0px; border: 0px; vertical-align: baseline; background-color: rgb(255, 255, 255);"><code class="prettyprint" style="margin: 0px; padding: 0px; border: none; font-size: 0.9em; vertical-align: baseline; font-family: Menlo, Monaco, 'Andale Mono', 'lucida console', 'Courier New', monospace; line-height: 2; display: block;"><span class="pun" style="margin: 0px; padding: 0px; border: 0px; vertical-align: baseline; color: rgb(255, 255, 255);"><span class="com">[</span></span><span class="pln" style="margin: 0px; padding: 0px; border: 0px; vertical-align: baseline; color: rgb(255, 255, 255);"><span class="com">person MR_deleteEntity</span></span><span class="pun" style="margin: 0px; padding: 0px; border: 0px; vertical-align: baseline; color: rgb(255, 255, 255);"><span class="com">];</span></span></code></span></li><li class="L2" style="margin: 0px; padding: 0px; border: 0px; vertical-align: baseline; line-height: 16px; list-style: decimal;"><span style="margin: 0px; padding: 0px; border: 0px; vertical-align: baseline; background-color: rgb(255, 255, 255);"><code class="prettyprint" style="margin: 0px; padding: 0px; border: none; font-size: 0.9em; vertical-align: baseline; font-family: Menlo, Monaco, 'Andale Mono', 'lucida console', 'Courier New', monospace; line-height: 2; display: block;"><span class="pun" style="margin: 0px; padding: 0px; border: 0px; vertical-align: baseline; color: rgb(255, 255, 255);"><span class="com">[[</span></span><span class="typ" style="margin: 0px; padding: 0px; border: 0px; vertical-align: baseline; color: rgb(152, 251, 152);"><span class="com">NSManagedObjectContext</span></span><span class="pln" style="margin: 0px; padding: 0px; border: 0px; vertical-align: baseline; color: rgb(255, 255, 255);"><span class="com"> MR_defaultContext</span></span><span class="pun" style="margin: 0px; padding: 0px; border: 0px; vertical-align: baseline; color: rgb(255, 255, 255);"><span class="com">]</span></span><span class="pln" style="margin: 0px; padding: 0px; border: 0px; vertical-align: baseline; color: rgb(255, 255, 255);"><span class="com"> MR_save</span></span><span class="pun" style="margin: 0px; padding: 0px; border: 0px; vertical-align: baseline; color: rgb(255, 255, 255);"><span class="com">];</span></span></code></span></li></ol></li></ol>

小技巧

启动时MR_mergedObjectModelFromMainBundle方法报错

Core Data的模型有版本的概念,有可能在你Magical Record第一次初始化完成以后,你又更改了模型文件,导致Core Data去合并模型报错。解决办法很简单,点击菜单中的Project->Clean即可。

项目使用ARC后,编译Magical Record不通过

点击项目 -> Build Phases -> Compile Sources中, 双击报错的class文件, 编辑Compiler Flags加入 -fno-objc-arc。

不想使用MR_前缀

只需要在*-Prefix.pch文件中添加一句#define MR_SHORTHAND即可,注意这句要在#import “CoreData+MagicalRecord.h”之前。

参考链接:

Magical Record: how to make programming with Core Data pleasant

注:这篇文章中的MagicalRecordHelpers、MRCoreDataAction都已经不在新版本的Magical Record中存在,都已经更改为MagicalRecord。


0 0
原创粉丝点击