数据持久化(六)之Using CoreData with MagicalRecord
第五节里面,我介绍了CoreData的配置和主要的增删改查,可能非常多人会认为用它真繁琐.这里,我再介绍网上大神对它进行了人性化封装的第三方MagicalRecord,正如FMDB对sqlite进行了封装一样,MagicalRecord让你认为用CoreData非常方便.
@基本配置:
1.下载MagicalRecord,将里面的MagicalRecord目录拖入你的project
2.确定你创建的project没有勾选"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的更多相关文章
- [Xcode 实际操作]七、文件与数据-(14)数据持久化存储框架CoreData的使用:删除CoreData中的数据
目录:[Swift]Xcode实际操作 本文将演示如何删除数据持久化对象. 在项目导航区,打开视图控制器的代码文件[ViewController.swift] import UIKit //引入数据持 ...
- [Xcode 实际操作]七、文件与数据-(13)数据持久化存储框架CoreData的使用:编辑CoreData中的数据
目录:[Swift]Xcode实际操作 本文将演示如何修改数据持久化对象. 在项目导航区,打开视图控制器的代码文件[ViewController.swift] import UIKit //引入数据持 ...
- [Xcode 实际操作]七、文件与数据-(12)数据持久化存储框架CoreData的使用:查找CoreData中的数据
目录:[Swift]Xcode实际操作 本文将演示如何查找数据持久化对象. 在项目导航区,打开视图控制器的代码文件[ViewController.swift] import UIKit //引入数据持 ...
- [Xcode 实际操作]七、文件与数据-(11)数据持久化存储框架CoreData的使用:创建CoreData实体并插入数据
目录:[Swift]Xcode实际操作 本文将演示[CoreData]数据持久化存储框架的使用. 点击[Create a new Xcode project]创建一个新的项目 ->[Single ...
- IOS学习:ios中的数据持久化初级(文件、xml、json、sqlite、CoreData)
IOS学习:ios中的数据持久化初级(文件.xml.json.sqlite.CoreData) 分类: ios开发学习2013-05-30 10:03 2316人阅读 评论(2) 收藏 举报 iOSX ...
- ios数据持久化--CoreData框架的介绍和使用
1.Core Data 是数据持久化存储的最佳方式 2.数据最终的存储类型可以是:SQLite数据库,XML,二进制,内存里,或自定义数据类型 在Mac OS X 10.5Leopard及以后的版本中 ...
- iPhone开发 数据持久化总结(终结篇)—5种数据持久化方法对比
iPhone开发 数据持久化总结(终结篇)—5种数据持久化方法对比 iphoneiPhoneIPhoneIPHONEIphone数据持久化 对比总结 本篇对IOS中常用的5种数据持久化方法进行简单 ...
- iOS开发简记(8):数据持久化
数据持久化,也就是把数据保存到磁盘,以后可以再读取出来使用(也可以再次更改或删除).很多场景需要数据持久化,比如为了减轻服务器的访问与存储压力,客户端需要在本地做一些数据持久化的工作. iOS的数据持 ...
- iOS之数据持久化方案
概论 所谓的持久化,就是将数据保存到硬盘中,使得在应用程序或机器重启后可以继续访问之前保存的数据.在iOS开发中,有很多数据持久化的方案,接下来我将尝试着介绍一下5种方案: plist文件(属性列表) ...
随机推荐
- git的学习笔记整理
Git学习较好的网址:http://www.liaoxuefeng.com/wiki/0013739516305929606dd18361248578c67b8067c8c017b000/001373 ...
- jsp登录会话
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding= ...
- 1、Go base64编码
package main import ( "encoding/base64" "fmt") func main() { //标准base64编码 data:= ...
- [SCOI2008]着色方案 递推 记忆化搜索
我们发现 $c_{i}$ 和 $k$ 的规模非常小我们还发现每种颜色的位置是不必知道的,只要这种颜色和相邻的颜色种类不同即可.定义状态 $f[a][b][c][d][e][last]$,代表有 $a$ ...
- centos通过yum安装jdk
安装之前先检查一下系统有没有自带open-jdk 命令: rpm -qa |grep java rpm -qa |grep jdk rpm -qa |grep gcj 如果没有输入信息表示没有安装. ...
- bzoj1230 开关灯 线段树
好久没写线段树了..被一道线段树裸题卡了一个上午 对区间进行异或,查询的时候直接用区间长度减去原有是数量就是改变完的数量 #include<bits/stdc++.h> using nam ...
- 第三讲 $\mathbb{R}^4$上平凡主丛的联络、曲率与Yang-Mills泛函
一. $\mathbb{R}^4$或$\mathbb{R}^n$上平凡主丛的联络与曲率$\newcommand{\R}{\mathbb{R}}$ 回忆切丛$T\R^n\cong \R^n\times\ ...
- 【Codeforces Round #421 (Div. 2) B】Mister B and Angle in Polygon
[题目链接]:http://codeforces.com/contest/820/problem/B [题意] 给你一个正n边形; 然后让你在这正n边行中选3个点,组成一个角; 找出角的大小和所给的角 ...
- 洛谷 P1952 火星上的加法运算_NOI导刊2009提高(3)
P1952 火星上的加法运算_NOI导刊2009提高(3) 题目描述 最近欢欢看到一本有关火星的书籍,其中她被一个加法运算所困惑,由于她的运算水平有限.她想向你求助,作为一位优秀的程序员,你当然不会拒 ...
- Log4j2打印一行日志时返回本行日志的字符串
import org.apache.logging.log4j.Level; import org.apache.logging.log4j.core.impl.Log4jLogEvent; impo ...