MagicalRecord简单使用小记
一般采用pod安装,导入框架
#import <CoreData+MagicalRecord.h> - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions { // 其他代码操作...... [MagicalRecord setupCoreDataStack]; // 其他代码操作......
} - (void)applicationWillTerminate:(UIApplication *)application { // 其他代码操作...... [MagicalRecord cleanUp]; // 其他代码操作......
}
- (void)applicationDidEnterBackground:(UIApplication *)application {
// 其他代码操作......
[[NSManagedObjectContext MR_defaultContext] MR_saveOnlySelfAndWait];
// 其他代码操作...... }
当然我们还得建立Model.xcdatamodel来自定义TestUser类的需求属性,这里省略此操作,添加几个属性而已。
TestUser继承自NSManagedObject
+ (NSString *)MR_entityName {
// model.xcdatamodelid里对象的名字
return @"User";
}
从数据库里拿到一个当前用户,这个当前用户应该满足,其属性为登录状态==Yes
+ (TestUser *)currentUser {
if (!_currentUser) {
_currentUser =
[self MR_findFirstByAttribute:NSStringFromSelector(@selector(logged))
withValue:@YES];
}
return _currentUser;
}
用户执行了登出操作
- (void)logout {
// 登出了,当然就没有登录了,状态设置成NO
[TestUser1 currentUser].logged = NO;
// 存储变化的对象
[[NSManagedObjectContext MR_defaultContext] MR_saveOnlySelfAndWait];
// 同时更新偏好里的bool值
if ([[NSUserDefaults standardUserDefaults] boolForKey:@"LOGOUT"]) {
[[NSUserDefaults standardUserDefaults]setBool:NO forKey:@"LOGOUT"];
[[NSUserDefaults standardUserDefaults]synchronize];
return;
}
// 发出用户登出的通知,以后其他控制器,类实例,进行相应的操作
[[NSNotificationCenter defaultCenter] postNotificationName:TestUser1DidLogoutNotification object:nil];
}
查找所有某个类的实例
NSArray *allUsers = [TestUser1 MR_findAll];
for (TestUser1 *user in allUsers) {
user.logged = NO;
}
查找特定条件某个类的实例
TestUser *user = [TestUser
// 查找uid为12345的用户
MR_findFirstByAttribute:NSStringFromSelector(@selector(uid)) withValue:@()]; if (!user)
{
// 没有找到就创建一个TestUser
user = [TestUser MR_createEntity];
}
TestUser实例属性变化后,调用
[[NSManagedObjectContext MR_defaultContext] MR_saveOnlySelfAndWait];
其他高级分页,关联的操作,待更新
MagicalRecord简单使用小记的更多相关文章
- Realm简单使用小记
一.项目环境:纯OC 载入Realm: pod 'Realm' 二.为了方便调用可以写一个Realm类的分类 #import <Foundation/Foundation.h> #impo ...
- gulp简单使用小记
npm install --save-dev 写入package.json里 var gulp = require('gulp'); var less = require('gulp-less ...
- Synergy简单使用小记
需求: 两台笔记本用两套键盘鼠标,那体验,糟透了. 怎样才能使得两个主机公用一套鼠标和键盘呢?上网搜索到Synergy这款软件 参考: 具体使用方法参考了这篇博文 基本使用: 这款软件分为服务端和客户 ...
- pop动画库简单使用小记
- (void)animateInView:(UIView *)view{ UIImageView *imageView = [[UIImageView alloc] initWithImage:[U ...
- window nginx 简单搭建服务器访问静态资源
nginx命令: 启动: start nginx 停止:nginx -s stop || nginx -s quit 注:stop是快速停止nginx,可能并不保存相关信息:quit是完整有序的停止 ...
- 微信H5支付坑一--手续费未结算
简单随笔小记: 场景:在微信H5支付的过程中,无论怎么支付完成,在微信商户后台查询手续费依然未扣除,当时手续费账户月为5元. 解决方法:起初无论怎么测试都不知道代码到底问题出在哪里了,想一下手续费账户 ...
- ABAP关键字SUBMIT的简单例子和学习小记
网上有关SUBMIT实现程序调用的例子稍显复杂,而相关的参考和解释则不是很完善.本文给出一个SUBMIT的小示例程序(代码见文末),实现了最简单的程序间调用及返回值,以及SAP官方文档中相关内容的翻译 ...
- 【MVVMLight小记】二.开发一个简单图表生成程序附源码
上一篇文章介绍了怎样快速搭建一个基于MVVMLight的程序http://www.cnblogs.com/whosedream/p/mvvmlight1.html算是简单入门了下,今天我们来做一个稍许 ...
- 一个简单的小小记账本程序(java)
感觉基础知识学了不少,但是一直搞不清一个项目的实际开发流程,所以就借着这个小记账本的程序梳理一下.因为楼主也是出于学习阶段的菜鸟,所以程序可能会有各种玄学的bug,希望一起提升吧. 跟着站长学到了很多 ...
随机推荐
- python中的函数以及递归
一 函数 函数的组成: def funname(parameters): instructions.... 在探讨函数的定义之前,让我们想想,如果我们写了上千行代码,其实各种变量定义,循环..... ...
- java-汉字转换拼音-pinyin4j.jar
使用pinyin4j将汉字转成拼音,附件为pinyin4j的jar包 import net.sourceforge.pinyin4j.PinyinHelper; import net.sourcefo ...
- java基础2.0:Object、Class、克隆、异常编程
Java编程中两个重要的类Object 和 Class及java异常编程 (1)是所有Java类(API提供的类.自定义类)的最终父类. (2)作用:在JVM管理对象中的过程中,有一套统一的类型检查和 ...
- 数据库连接池的选择 Druid
我先说说数据库连接 数据库大家都不陌生,从名字就能看出来它是「存放数据的仓库」,那我们怎么去「仓库」取东西呢?当然需要钥匙啦!这就是我们的数据库用户名.密码了,然后我们就可以打开门去任意的存取东西了. ...
- 【HDU 5832】A water problem(大数取模)
1千万长度的数对73和137取模.(两个数有点像,不要写错了) 效率要高的话,每15位取一次模,因为取模后可能有3位,因此用ll就最多15位取一次. 一位一位取模也可以,但是比较慢,取模运算是个耗时的 ...
- JAVA中AJAX的使用
AJAX<%@ page language="java" import="java.util.*" pageEncoding="UTF-8&qu ...
- Linux 爬虫
curl https://www.msi.umn.edu/tutorial-materials >tmp.txt perl -alne '{/(https.*?pdf)/;print $1 if ...
- 洛谷P1595 信封问题
题目描述 某人写了n封信和n个信封,如果所有的信都装错了信封.求所有信都装错信封共有多少种不同情况. 输入输出格式 输入格式: 一个信封数n 输出格式: 一个整数,代表有多少种情况. 输入输出样例 输 ...
- VMP虚拟机加壳的原理学习
好久没有到博客写文章了,9月份开学有点忙,参加了一个上海的一个CHINA SIG信息比赛,前几天又无锡南京来回跑了几趟,签了阿里巴巴的安全工程师,准备11月以后过去实习,这之前就好好待在学校学习了. ...
- 使用Eval()绑定数据时使用三元运算符
ASP.NET邦定数据“<%#Eval("Sex")%>”运用三元运算符: <%#(Eval("Sex", "{0}") ...