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,希望一起提升吧. 跟着站长学到了很多 ...
随机推荐
- [转]Eclipse工具使用技巧总结
首先推荐一篇非常好的How to use eclipse文章 ,讲的是eclipse使用的方方面面,非常实用,推荐给大家! 一.常用快捷键:Ctrl+F11 运行Ctrl+Shift+/ 在代码窗口中 ...
- CNN中的BN
w权值的初始化,之前最好的方法是 也就是输入神经元和输出神经元中随机一个数,然后除以输入神经元的个数开根号 因为全连接层波动较大,所以加在FC后面 这里Y,b是为了对信息的一个还原
- javascript 方法实例
输出对象的属性名称与值 : boj(o){ for(var p in o){ console.log(p + ":" + o[p] + "\n"); } } 构 ...
- Kernel Methods (4) Kernel SVM
(本文假设你已经知道了hard margin SVM的基本知识.) 如果要为Kernel methods找一个最好搭档, 那肯定是SVM. SVM从90年代开始流行, 直至2012年被deep lea ...
- eclipse中maven install和build,clean
eclipse插件,m2eclipse 1.maven install相当于maven原生的命令: mvn install 2.aven build是 m2eclipse这个插件自己创造的概念,需要你 ...
- 用C#制作推箱子小游戏
思路分析: 一.制作一个地图 二.地图中放置墙.箱子.人.目标等 三.让小人动起来完成推箱子动作 游戏制作: 1.按照上述地图制作一个地图 (12行×13列) 地图可以看做是行和列组成的,即可以看做 ...
- wow.js使用方法
近日,在做项目中,需要做到滚动条滑到某个位置时,才能显示动画,网上查询到有个wow.js可以达到要求,现在把使用方法做如下总结: wow.js演示地址 wow.js的github地址 使用方法真是超简 ...
- tarjan求桥、割顶
若low[v]>dfn[u],则(u,v)为割边.但是实际处理时我们并不这样判断,因为有的图上可能有重边,这样不好处理.我们记录每条边的标号(一条无向边拆成的两条有向边标号相同),记录每个点的父 ...
- eclipse下查看jdk源码
打开eclipse,点 "window"-> "Preferences" -> "Java" -> "Insta ...
- 【BZOJ-2768】冠军调查 最小割
2768: [JLOI2010]冠军调查 Time Limit: 10 Sec Memory Limit: 128 MBSubmit: 971 Solved: 661[Submit][Status ...