![Logo](http://images.cnitblog.com/blog2015/497279/201505/051004316736641.png)
MJExtension
===
- A fast, convenient and nonintrusive conversion between JSON and model.
- 转换速度快、使用简单方便的字典转模型框架
GitHub:[CoderMJLee](https://github.com/CoderMJLee) | Blog:[mjios(Chinese)](http://www.cnblogs.com/mjios) | PR is welcome,or [feedback](mailto:richermj123go@vip.qq.com)
## Contents
* [Getting Started 【开始使用】](#Getting_Started)
* [Features 【能做什么】](#Features)
* [Installation 【安装】](#Installation)
* [Examples 【示例】](#Examples)
* [JSON -> Model](#JSON_Model)
* [JSONString -> Model](#JSONString_Model)
* [Model contains model](#Model_contains_model)
* [Model contains model-array](#Model_contains_model_array)
* [Model name - JSON key mapping](#Model_name_JSON_key_mapping)
* [JSON array -> model array](#JSON_array_model_array)
* [Model -> JSON](#Model_JSON)
* [Model array -> JSON array](#Model_array_JSON_array)
* [Core Data](#Core_Data)
* [Coding](#Coding)
* [Camel -> underline](#Camel_underline)
* [NSString -> NSDate, nil -> @""](#NSString_NSDate)
* [More use cases](#More_use_cases)
---
# <a id="Getting_Started"></a> Getting Started【开始使用】
## <a id="Features"></a> Features【能做什么】
- MJExtension是一套字典和模型之间互相转换的超轻量级框架
* `JSON` --> `Model`、`Core Data Model`
* `JSONString` --> `Model`、`Core Data Model`
* `Model`、`Core Data Model` --> `JSON`
* `JSON Array` --> `Model Array`、`Core Data Model Array`
* `JSONString` --> `Model Array`、`Core Data Model Array`
* `Model Array`、`Core Data Model Array` --> `JSON Array`
* Coding all properties of model in one line code.
* 只需要一行代码,就能实现模型的所有属性进行Coding(归档和解档)
## <a id="Installation"></a> Installation【安装】
### From CocoaPods【使用CocoaPods】
```ruby
pod 'MJExtension'
```
### Manually【手动导入】
- Drag all source files under floder `MJExtension` to your project.【将`MJExtension`文件夹中的所有源代码拽入项目中】
- Import the main header file:`#import "MJExtension.h"`【导入主头文件:`#import "MJExtension.h"`】
```objc
MJExtension.h
MJConst.h MJConst.m
MJFoundation.h MJFoundation.m
MJProperty.h MJProperty.m
MJType.h MJType.m
NSObject+MJCoding.h NSObject+MJCoding.m
NSObject+MJProperty.h NSObject+MJProperty.m
NSObject+MJKeyValue.h NSObject+MJKeyValue.m
```
# <a id="Examples"></a> Examples【示例】
### <a id="JSON_Model"></a> The most simple JSON -> Model【最简单的字典转模型】
```objc
typedef enum {
SexMale,
SexFemale
} Sex;
@interface User : NSObject
@property (copy, nonatomic) NSString *name;
@property (copy, nonatomic) NSString *icon;
@property (assign, nonatomic) unsigned int age;
@property (copy, nonatomic) NSString *height;
@property (strong, nonatomic) NSNumber *money;
@property (assign, nonatomic) Sex sex;
@property (assign, nonatomic, getter=isGay) BOOL gay;
@end
/***********************************************/
NSDictionary *dict = @{
@"name" : @"Jack",
@"icon" : @"lufy.png",
@"age" : @20,
@"height" : @"1.55",
@"money" : @100.9,
@"sex" : @(SexFemale),
@"gay" : @"true"
// @"gay" : @"1"
// @"gay" : @"NO"
};
// JSON -> User
User *user = [User mj_objectWithKeyValues:dict];
NSLog(@"name=%@, icon=%@, age=%zd, height=%@, money=%@, sex=%d, gay=%d", user.name, user.icon, user.age, user.height, user.money, user.sex, user.gay);
// name=Jack, icon=lufy.png, age=20, height=1.550000, money=100.9, sex=1
```
### <a id="JSONString_Model"></a> JSONString -> Model【JSON字符串转模型】
```objc
// 1.Define a JSONString
NSString *jsonString = @"{\"name\":\"Jack\", \"icon\":\"lufy.png\", \"age\":20}";
// 2.JSONString -> User
User *user = [User mj_objectWithKeyValues:jsonString];
// 3.Print user's properties
NSLog(@"name=%@, icon=%@, age=%d", user.name, user.icon, user.age);
// name=Jack, icon=lufy.png, age=20
```
### <a id="Model_contains_model"></a> Model contains model【模型中嵌套模型】
```objc
@interface Status : NSObject
@property (copy, nonatomic) NSString *text;
@property (strong, nonatomic) User *user;
@property (strong, nonatomic) Status *retweetedStatus;
@end
/***********************************************/
NSDictionary *dict = @{
@"text" : @"Agree!Nice weather!",
@"user" : @{
@"name" : @"Jack",
@"icon" : @"lufy.png"
},
@"retweetedStatus" : @{
@"text" : @"Nice weather!",
@"user" : @{
@"name" : @"Rose",
@"icon" : @"nami.png"
}
}
};
// JSON -> Status
Status *status = [Status mj_objectWithKeyValues:dict];
NSString *text = status.text;
NSString *name = status.user.name;
NSString *icon = status.user.icon;
NSLog(@"text=%@, name=%@, icon=%@", text, name, icon);
// text=Agree!Nice weather!, name=Jack, icon=lufy.png
NSString *text2 = status.retweetedStatus.text;
NSString *name2 = status.retweetedStatus.user.name;
NSString *icon2 = status.retweetedStatus.user.icon;
NSLog(@"text2=%@, name2=%@, icon2=%@", text2, name2, icon2);
// text2=Nice weather!, name2=Rose, icon2=nami.png
```
### <a id="Model_contains_model_array"></a> Model contains model-array【模型中有个数组属性,数组里面又要装着其他模型】
```objc
@interface Ad : NSObject
@property (copy, nonatomic) NSString *image;
@property (copy, nonatomic) NSString *url;
@end
@interface StatusResult : NSObject
/** Contatins status model */
@property (strong, nonatomic) NSMutableArray *statuses;
/** Contatins ad model */
@property (strong, nonatomic) NSArray *ads;
@property (strong, nonatomic) NSNumber *totalNumber;
@end
/***********************************************/
// Tell MJExtension what type model will be contained in statuses and ads.
[StatusResult mj_setupObjectClassInArray:^NSDictionary *{
return @{
@"statuses" : @"Status",
// @"statuses" : [Status class],
@"ads" : @"Ad"
// @"ads" : [Ad class]
};
}];
// Equals: StatusResult.m implements +mj_objectClassInArray method.
NSDictionary *dict = @{
@"statuses" : @[
@{
@"text" : @"Nice weather!",
@"user" : @{
@"name" : @"Rose",
@"icon" : @"nami.png"
}
},
@{
@"text" : @"Go camping tomorrow!",
@"user" : @{
@"name" : @"Jack",
@"icon" : @"lufy.png"
}
}
],
@"ads" : @[
@{
@"image" : @"ad01.png",
@"url" : @"http://www.ad01.com"
},
@{
@"image" : @"ad02.png",
@"url" : @"http://www.ad02.com"
}
],
@"totalNumber" : @"2014"
};
// JSON -> StatusResult
StatusResult *result = [StatusResult mj_objectWithKeyValues:dict];
NSLog(@"totalNumber=%@", result.totalNumber);
// totalNumber=2014
// Printing
for (Status *status in result.statuses) {
NSString *text = status.text;
NSString *name = status.user.name;
NSString *icon = status.user.icon;
NSLog(@"text=%@, name=%@, icon=%@", text, name, icon);
}
// text=Nice weather!, name=Rose, icon=nami.png
// text=Go camping tomorrow!, name=Jack, icon=lufy.png
// Printing
for (Ad *ad in result.ads) {
NSLog(@"image=%@, url=%@", ad.image, ad.url);
}
// image=ad01.png, url=http://www.ad01.com
// image=ad02.png, url=http://www.ad02.com
```
### <a id="Model_name_JSON_key_mapping"></a> Model name - JSON key mapping【模型中的属性名和字典中的key不相同(
没有合适的资源?快使用搜索试试~ 我知道了~
ios-HWExercises 题库、答题、搭建项目框架.zip
共410个文件
h:67个
m:64个
png:28个
需积分: 34 6 下载量 59 浏览量
2019-07-11
18:57:04
上传
评论
收藏 799KB ZIP 举报
温馨提示
iOS 答题、题库功能实现,项目框架搭建。 CSDN博客:http://blog.csdn.net/hero_wqb/article/details/72834282
资源推荐
资源详情
资源评论
收起资源包目录
ios-HWExercises 题库、答题、搭建项目框架.zip (410个子文件)
00163a99463c6b10019665a2e257738ef295dc 954B
0231f590e51d16aa334a59c43ed098e2e989fd 135B
02f7fc7420e2dbcba14254191691414497bae9 677B
03eec23966e62fd0c70a9c6edd8980bfcf5c96 3KB
04e05a476af490b539707f753e2515ec24d898 161B
04f50fe8c4c0f86787bed924699f9a96dfc0f4 2KB
05efa81bb848169e38e26afdd922fd5f9e96bf 2KB
0805b86b72adb2aa05e92989b047323f9041c7 5KB
0d96b51d97be019c1bd8c0202cfaee49faa464 173B
0e18de74ffdf3096f4db936f346a98f6b85928 2KB
0e4578d558586596b5a14351e5e5531ad800fc 219B
0eafdbad11b19259d8fcda2dc0842b1f46ddf3 286B
0eb33bf95d03ad1d915daa1c423dcbb524d8e4 978B
0f8891ecfba542fed12dd584305c20cd1251e4 280B
1211d660eb9c9db24d18573c317a5365ca7e9a 950B
13eb85dd32897735dce34e017058547e5ca44b 1KB
1a92e7382e33d9eba539e68c388f46e53061d5 137B
1ad995518706fd9da7333af1ed425095738fe4 179B
1c499eab6600fc409f181a754e960108d870ed 2KB
1e3b0c362b9e83fcee55ade45de80070b466db 867B
1f6423a14184ef31787ec4c93c8ee6c294ef9a 793B
2108cd7786f99811e5ba9505592bbdd109ef86 12KB
217e0a3146ee4a23ed1c0695bca7290fa04586 170B
22fc1d52aa75c5418e7ef792d8334064880ac5 181B
236c65348164bf01a6f5e909f07ea57ade94ce 171B
24c9b86c0b027347e32179169931c65c3f61ef 1KB
27a397dec91e82378c448f0278d08fa00c48f1 99B
27de0b594c36834802216637a51309c6cd08e9 281B
280217f2f64354563d036757bf3bbed5e2e569 172B
28a4abc3096c508b36efb8cc8e608428f322bd 2KB
29252e5a2dd4179c35b5517c68ed5e9772e440 2KB
29698c4c56ae1c65c132f2754a23d888259a74 781B
29778bd872d71259ab158b866ed5cbc760a27c 5KB
2ac98092b7723c62533a57f8065c56742294b3 13KB
2e17fa5ffc72d4104922799c813e4fc5c90c24 2KB
31aeb0fec60ae7a3bb8fc2aadc75438b6ca43f 1KB
327ddc8eae21bcec110535b8d80a6a3a725ea2 599B
3412290d4e1ad8f7d5c0be8a598792922f1964 2KB
34d681fcd351b137abc110fd82a6dd2dcf20fe 2KB
35d09c95a82f9cdcaae8e195c5453876763b9d 337B
395be8fd09eac5ce70410eedc1678708a5768b 161B
3a6c3ca7b27816f7cc5a2397ad10043913744e 460B
3d0a884d9a1d7ee3f8354ef5b6db1a82ab7eaf 950B
3dab33417095d489a54620ca5f6cbb04e534e5 949B
3e0d4a3b04d16d6fefda7d3d00a67096adc879 2KB
3f87d29e350135fe70dcff7452a9a456f16c65 1012B
403583a79278a440ef91a8fd66f2c1f34d173d 919B
40715c376627ea55da9387a56cf356d351c645 2KB
430addbf848aa350c14f5ac6358f4bb86d27a3 4KB
43913775d0920c1e8f884204765a773ec33595 2KB
447a86f6eed1249ecca9a145d99ec6c5d386bb 2KB
4679928d82af8797b1b3574a35ebeecc27de11 6KB
467d22d9489dc2245a8253e3fe9204fb2cd8ce 974B
4696b9aa43e9b59212d5a18b43a09e25522d05 7KB
4709d94e1bd945dbb2ac7a93464904143ed2d5 284B
477bf6c654d634f7b1ec3604ac54540f3037de 5KB
4a23c0cbb5a4a14266f983d4d135eca258509a 168B
4a6b53e8a09e143db05cc0b8bc7039b77b3c37 173B
4bae8e28757f2726646514393bf99000285b5c 1007B
4beba5ed5af58a3c436155fa72e706e6066834 964B
4cd1c3d9a2ddd816f43ce8656a0045ae530200 248B
4da3b094981f52824e7626effb65cf3cfa735d 182B
4eb3f69f31db51e455298b1018a32a134f29fe 478B
4fa1d3b221181594fe045635ef83b8a75371f2 172B
4fe92ea37ec1c8ad1f8a4281af87bd11832c4e 176B
5228780de45b60893f3b34d27590cb9442e7ad 912B
53f27aa3c6efa64cf7c55dbfa3edb9aa428f77 582B
5836485da73f380968f872a3e2e8f4991a453d 3KB
5d9ba711df733b31f8ab5fe2caa82fb2adf6d9 173B
5eafcf7422aad350583e810d9b035547afaf98 1KB
60e20704f80a3938b4f4e52985006977c058a1 479B
62a1667932d2b2b1698ceb3040d7dd301f095e 878B
6317aac2cca13d69e74d7845a4d13ba64f94d7 1KB
634e4cf90aa0f7ec28d5916801f4a440bf1a42 284B
65483682fa54b4bea1885d2a90f9e9e3d7f839 131B
661331e727e19a4660141e9e74cab8c6dce939 2KB
67354540a0a35f83b0743ef1c6857b3f8b5ec9 168B
684ec013e37a4376230ca6ed6aeb4427e49680 942B
6980761e3d7244f1721911c131dc269879d1b6 182B
6c23c43adc88621ce3abfbd1585c8792bd165c 339B
703bbc861bbd8f53bd5a121e73e212559657ff 52B
704eda39a457b9afa89ac8b3abd952af06e315 2KB
710faf8402573e9fb5b9f52f725a16ceeddf81 2KB
715497553ad1b71f8ee1524fd762c51ed2966f 480B
7184cff9dd6beac066b55537ad5f4c35ee1525 175B
721564584e43f898973a3227236d000bf1345e 173B
729772eb3e01ea722fe62aa3665944e0bf1c94 993B
744cddd54f0efd2a951b7379d051b95837154c 793B
7508e06a937bec3221798199fbaf9f89adf582 3KB
75c15f3dff0d002af8d0a61b00429508e56116 170B
7747ca30b5dfc4403ba41ebe40d0c3adc410dc 62B
7a5c8c594715573bab16e6531c3ce2b2d55391 178B
7af44610681f4b97de17c30a000c837442ed84 2KB
7d11529e535d17e10208642515bae42ef67446 758B
7eff81b12b9690ef9dbc497a952dbf2508652f 3KB
802b5591e75e9d9fede3aab2f3078b560d6db1 196B
81d377c6a1a56cfc3cd53ab33f63bbed209544 4KB
85389ceaf2cf3a618380c118679deab4446c89 3KB
8755e2789d550feb90f08a4569152fd4845fb5 2KB
888c1e2e6ae0b8cea1c7e7cad94ae9876a3ddd 178B
共 410 条
- 1
- 2
- 3
- 4
- 5
资源评论
weixin_39841882
- 粉丝: 443
- 资源: 1万+
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- 二叉树7-1-1.cpp
- android 9.0 原生模拟器 签名文件
- 技术面试最后反问面试官的话 校招面试非技术问题有哪些 非技术问题如何回答.png
- NB-IOT-BC26全网通模块Altium+ CADENCE +PADS三种格式(原理图SCH+PCB封装库)文件.zip
- 基于微信小程序开发的校园失物招领系统源码毕业设计(优质项目源码).zip
- 词向量是一种将自然语言中的单词转换为数值向量的技术,它能够捕捉词义和上下文信息
- nmap与masscan的简单使用
- MyBatis动态SQL.pdf
- 基于stm32单片机protues仿真的温湿度控制系统设计(仿真图、源代码)
- 词向量:自然语言处理的基石
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功