一般采用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. easyui-datagrid 报错:TypeError: col is null

    一般是由于设置的属性用到的列,如: idField:'aa', sortName:'bb' 等在 columns:[[{field:'cc',width:80,title:'列cc'}, {field ...

  2. 区间DP lightoj 1031

    在此游戏中任意时刻的状态都是原始序列的一段子序列故: 定义d(i, j) : 表示原来序列的第i ~ j个元素组成的子序列,在双方都采取最优策略的情况下,先手得分的最大值. 状态转移时,需要枚举从左边 ...

  3. 安全框架 SpringSecurity 和 Shiro 对比

    突然再次很想理一下权限的事,但是实在不知道实际情况选哪个框架好,现在整理下网上的资料,做一下对比. 1.Spring-security 对spring 结合较好,如果项目用的springmvc ,使用 ...

  4. mysql-存储过程案例-存储过程中创建表和修改表数据

    -- 本存储过程有特殊执行循环数量的要求,是对security_market_history表进行修正 -- 判断存储过程是否存在 drop PROCEDURE if exists proc_secu ...

  5. 资源: StaticResource, ThemeResource

    StaticResource ThemeResource 示例1.演示“StaticResource”相关知识点Resource/StaticResourceDemo.xaml <Page x: ...

  6. python协程和yeild

    python多线程其实在操作系统级别是进程,因为在执行时,默认加了一个全局解释器锁(GIL),python的多线程,本质还是串行的,无法利用多核的优势:在java和C# 中,多线程是并发的,可以充分利 ...

  7. 【BZOJ-1497】最大获利 最大流

    1497: [NOI2006]最大获利 Time Limit: 5 Sec  Memory Limit: 64 MBSubmit: 3800  Solved: 1848[Submit][Status] ...

  8. Cache Helper类

    using System; using System.Collections.Generic; using System.Web; using System.Collections; using Sy ...

  9. 任意List 和DatabTable的转换

     public static IEnumerable<T> ToEntityList<T>(this DataTable table) where T : class      ...

  10. Android中运行的错误:java.lang.UnsatisfiedLinkError: Couldn't load locSDK3: findLibrary returned null.

    ---恢复内容开始--- 明明已经加入了liblocSDK3.so,但总是无法定位.提示错误java.lang.UnsatisfiedLinkError: Couldn't load locSDK3: ...