JSON Model转化 - (realm-json使用)

现在一般客户端和服务器相互基本都用json,关键的一步是客户端本地model和json的转化,如果用ios自带的api估计要累死。

试了很多别的插件后,最终选定realm-json ,这是基于realm的一个扩展插件 , realm是个好东西,上官网看看就知了。

real-json插件的github地址 :https://github.com/matthewcheok/Realm-JSON


首先pod

pod 'Realm'
pod 'Realm+JSON', '~> 0.2'

cd到目录下
pod install –verbose –no-repo-update
首次install的时候尽量翻墙


创建Model

创建realm自己的 model文件(参见realm官网安装插件)
这里写图片描述

然后输入model字段:

//userinfo.h
#import <Realm/Realm.h>
@interface userinfo : RLMObject
@property NSString* userId;
@property NSString * userName ;
@end
// This protocol enables typed collections. i.e.:
// RLMArray<userinfo>
RLM_ARRAY_TYPE(userinfo)

m文件 :

#import "userinfo.h"
@implementation userinfo
// Specify default values for properties
//+ (NSDictionary *)defaultPropertyValues
//{
//    return @{};
//}
// Specify properties to ignore (Realm won't persist these)
//+ (NSArray *)ignoredProperties
//{
//    return @[];
//}
+ (NSDictionary *)JSONInboundMappingDictionary {
    return @{
             @"name": @"userName",
             @"id": @"userId"
             };
}
+(NSString*)primaryKey{
    return @"userId";
}
@end

格式参见 realm官方文档
其中JSONInboundMappingDictionary 用来定义 json传入字段和本地model转化格式 ,比如json中的name 转化为本地userName , 如果没有这个函数则默认用驼峰格式 ,也就是本地如果是userName,那么json中必须是user_name,否则将无法获取数据。


转化

  //查看app所属default.realm数据库文件路径
   NSLog(@"%@",[[RLMRealm defaultRealm] path]);

    RLMRealm *realm = [RLMRealm defaultRealm];
    [realm beginWriteTransaction];
    userinfo* res= [userinfo createOrUpdateInRealm:realm withJSONDictionary:@{@"id":@"1",@"name":@"tyrant"}];
    [realm commitWriteTransaction];

上面是简单的单条数据 ,多条数据:

NSArray *result = [MCEpisode createOrUpdateInRealm:realm withJSONArray:array];

以上仅是最简单使用,更多用法参见realm和realm-json自带demo


附一个简单 demo:
https://github.com/tyrantkemp/realm_demo.git

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值