数据持久化(六)之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文件(属性列表) ...
随机推荐
- 10.Intellij IDEA svn的使用详解
转自:https://www.2cto.com/kf/201703/614858.html 首先提一句,IDEA对各种的版本控制工具的支持是非常好的,打开系统设置界面,就可以看到他有专门的一栏 Ver ...
- Android-加载大图,照片墙的实现
照片墙这种功能现在应该算是挺常见了,在很多应用中你都可以经常看到照片墙的身影.它的设计思路其实也非常简单,用一个GridView控件当作“墙”,然后随着GridView的滚动将一张张照片贴在“墙”上, ...
- 51Nod 蜥蜴和地下室(搜索)
哈利喜欢玩角色扮演的电脑游戏<蜥蜴和地下室>.此时,他正在扮演一个魔术师.在最后一关,他必须和一排的弓箭手战斗.他唯一能消灭他们的办法是一个火球咒语.如果哈利用他的火球咒语攻击第i个弓箭手 ...
- 使用物化视图解决GoldenGate不能使用中文表名问题
源端: conn sh/sh create table "学生" ("学号" number primary key,"姓名" varchar ...
- Monad的基本运算
A monad is created by defining a type constructor M and two operations, bind and return (where retur ...
- WLAN STA/AP 并发
WLAN STA/AP 并发 Android 9 引入了可让设备同时在 STA 和 AP 模式下运行的功能.对于支持双频并发 (DBS) 的设备,此功能让一些新功能得以实现,例如在用户想要启用热点 ( ...
- [HNOI2012]矿场搭建(割点)
[HNOI2012]矿场搭建 题目描述 煤矿工地可以看成是由隧道连接挖煤点组成的无向图.为安全起见,希望在工地发生事故时所有挖煤点的工人都能有一条出路逃到救援出口处.于是矿主决定在某些挖煤点设立救援出 ...
- PatentTips - Posting interrupts to virtual processors
BACKGROUND Generally, the concept of virtualization in information processing systems allows multipl ...
- awk条件语句
条件语句用于在运行操作之前做一个測试.在前面的章节中,我们看到了模式匹配规则的一些演示样例. 模式匹配规则本质上就是影响输入循环的条件表达式. 在这一部分,我们主要就在action中所使用的条件语句进 ...
- CentOS 配置防火墙操作实例(启、停、开、闭port)
CentOS 配置防火墙操作实例(启.停.开.闭port): 注:防火墙的基本操作命令: 查询防火墙状态: [root@localhost ~]# service iptables status& ...