一般采用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简单使用小记的更多相关文章

  1. Realm简单使用小记

    一.项目环境:纯OC 载入Realm: pod 'Realm' 二.为了方便调用可以写一个Realm类的分类 #import <Foundation/Foundation.h> #impo ...

  2. gulp简单使用小记

    npm install --save-dev 写入package.json里     var gulp = require('gulp'); var less = require('gulp-less ...

  3. Synergy简单使用小记

    需求: 两台笔记本用两套键盘鼠标,那体验,糟透了. 怎样才能使得两个主机公用一套鼠标和键盘呢?上网搜索到Synergy这款软件 参考: 具体使用方法参考了这篇博文 基本使用: 这款软件分为服务端和客户 ...

  4. pop动画库简单使用小记

    - (void)animateInView:(UIView *)view{ UIImageView *imageView = [[UIImageView alloc] initWithImage:[U ...

  5. window nginx 简单搭建服务器访问静态资源

    nginx命令: 启动: start nginx 停止:nginx -s stop ||  nginx -s quit 注:stop是快速停止nginx,可能并不保存相关信息:quit是完整有序的停止 ...

  6. 微信H5支付坑一--手续费未结算

    简单随笔小记: 场景:在微信H5支付的过程中,无论怎么支付完成,在微信商户后台查询手续费依然未扣除,当时手续费账户月为5元. 解决方法:起初无论怎么测试都不知道代码到底问题出在哪里了,想一下手续费账户 ...

  7. ABAP关键字SUBMIT的简单例子和学习小记

    网上有关SUBMIT实现程序调用的例子稍显复杂,而相关的参考和解释则不是很完善.本文给出一个SUBMIT的小示例程序(代码见文末),实现了最简单的程序间调用及返回值,以及SAP官方文档中相关内容的翻译 ...

  8. 【MVVMLight小记】二.开发一个简单图表生成程序附源码

    上一篇文章介绍了怎样快速搭建一个基于MVVMLight的程序http://www.cnblogs.com/whosedream/p/mvvmlight1.html算是简单入门了下,今天我们来做一个稍许 ...

  9. 一个简单的小小记账本程序(java)

    感觉基础知识学了不少,但是一直搞不清一个项目的实际开发流程,所以就借着这个小记账本的程序梳理一下.因为楼主也是出于学习阶段的菜鸟,所以程序可能会有各种玄学的bug,希望一起提升吧. 跟着站长学到了很多 ...

随机推荐

  1. [转] ServletContext 与application的异同

    相同:其实servletContext和application 是一样的,就相当于一个类创建了两个不同名称的变量.在 servlet中ServletContext就是application对象.大家只 ...

  2. iOS开发中的错误整理,再一次整理通过通知中心来处理键盘,一定记得最后关闭通知中心

    一.打开通知中心,监听键盘的显示与隐藏 二.最后记得将监听通知的对象移除

  3. Java设计模式(七) 模板模式

    [模板模式]在一个方法中定义了一个算法的骨架,而将一些步骤延迟到子类中.模板方法使得子类可以在不改变算法结构的情况下,重新定义算法中的某些步骤. 1,定义模板类 package com.pattern ...

  4. 通过JS实现网站繁体简体互换

    html部分 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www. ...

  5. java-二维码编写zxing

    zxing 这个是google的 下载地址 http://code.google.com/p/zxing/downloads/list 二维码源码案例 package com.utils; impor ...

  6. Android Studio开发调试使用

    Android Studio调试其实也非常方便,一般问题直接通过AS的DDMS的Logcat就可以搞定.AS支持类似Eclipse的DDMS的所有功能.这里要说的是疑难问题的调试方式,即断点调试. 首 ...

  7. linux下使用localhost和127.0.0.1都不能连接的解决思路

    linux下刚安装了mysql,尝试写了程序连接mysql,出现了只有用本地ip地址才能连接,而127.0.0.1和localhost都不能访问 解决这个问题主要查看3个方向 .hosts中是否有ip ...

  8. Java算法-插入排序

    插入排序的基本思想是在遍历数组的过程中,假设在序号 i 之前的元素即 [0..i-1] 都已经排好序,本趟需要找到 i 对应的元素 x 的正确位置 k ,并且在寻找这个位置 k 的过程中逐个将比较过的 ...

  9. linux(本机)配置域名

    hosts是一个没有扩展名的系统文件, 其作用就是将主机名映射到对应的ip地址. 当用户执行一条ping命令时(如ping www.abc.com),系统会首先自动从hosts文件中寻找www.abc ...

  10. Linux基础2

    命令格式命令的类型:1.内部命令 linux系统使用的shell提供.2.外部命令 安装第三方软件才会. type 命令名 查命令的类型 | 把前边命令的输出作为后边命令的输入 管道 grep 对数据 ...