一般采用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. EPUBBuilder编辑器新版

    epub全称为Electronic Publication的缩写,意为:电子出版, epub于2007年9月成为国际数位出版论坛(IDPF)的正式标准,以取代旧的开放Open eBook电子书标准,e ...

  2. 动画: ThemeAnimation(主题动画)

    背水一战 Windows 10 之 动画 PopInThemeAnimation - 控件出现时的动画 PopOutThemeAnimation - 控件消失时的动画 FadeInThemeAnima ...

  3. java内存管理机制

    JAVA 内存管理总结 1. java是如何管理内存的 Java的内存管理就是对象的分配和释放问题.(两部分) 分配 :内存的分配是由程序完成的,程序员需要通过关键字new 为每个对象申请内存空间 ( ...

  4. Integer与int的种种比较你知道多少?

    如果面试官问Integer与int的区别:估计大多数人只会说道两点,(1)Ingeter是int的包装类,int的初值为0:(2)Ingeter的 初值为null.但是如果面试官再问一下Integer ...

  5. 算法与数据结构之折半查找(C语言)

    #include <stdio.h> #include<stdlib.h> int binsearch(int x,int v[],int n);//函数声明 int main ...

  6. ftp,http,https有啥区别?

    [ftp与http的区别?] HTTP(Hyper Text Transmission Protocol)是超文本传输协议,FTP(FileTransferProtocol)是文件传输协议! HTTP ...

  7. 简单工厂VS工厂方法

    前言: GOF经典的23种设计模式在IT界现已被广为流传.由于比较长时间没有用了,个人对于不同模式与模式之间的区别也渐渐模糊,故开始重温设计模式的思想.也希望更给对设计模式感兴趣的朋友些许的启发. - ...

  8. Urtext的使用

    UITextField 是UIControl的子类,UIControl又是UIView的子类,所以也是一个视图,只不过比UIView多了两个功能,1.文字显示,2.文本编辑 使用过程分四步: 1.创建 ...

  9. bzoj 1503 splay

    因为是整体加减,所以直接记录在外面. #include<iostream> #include<cstdio> #include<cstring> #include& ...

  10. Matlab中cell存储为txt

    clc clear all [data1,data3]=textread('E:\RSWeb\mahoyt数据集\movielens\u.user','%s%*d%s%*s%*s','delimite ...