当前位置: 首页 > news >正文

合肥装饰公司前十名seo搜索排名优化方法

合肥装饰公司前十名,seo搜索排名优化方法,注册商贸公司代办,大兴安岭网站建设兼职IOS JsonModel的学习及使用 当我们从服务端获取到json数据后的时候,我们需要在界面上展示或者保存起来,下面来看下直接通过NSDictionary取出数据的情况。 NSDictionary直接取出数据的诟病。 NSString *name [self.responseObj objectForKey:"nam…

IOS JsonModel的学习及使用

当我们从服务端获取到json数据后的时候,我们需要在界面上展示或者保存起来,下面来看下直接通过NSDictionary取出数据的情况。

NSDictionary直接取出数据的诟病。

    NSString *name = [self.responseObj objectForKey:@"name"];NSString *gender = [self.responseObj objectForKey:@"gender"];NSString *sign = [self.responseObj objectForKey:@"sign"];NSString *avatar = [self.responseObj objectForKey:@"avatar"];NSString *phone = [self.responseObj objectForKey:@"phone"];NSString *token = [self.responseObj objectForKey:@"token"];

从以上的代码,我们能够看出,取出数据相当繁琐的。为了防止显示及出现crash等问题,还需要判断值的nil,null,类型等情况的出现。
所以我们需要使用到JSONModel。

简介JSONModel

JSONModel - 神奇的JSON数据建模框架 https://github.com/jsonmodel/jsonmodel
JSONModel可以快速创建智能数据模型。你可以在你的iOS,MacOS和watchOS和tvOS应用程序使用它。自动将JSON转成你的模型类,大大减少你需要编写的代码量。

见http://www.laileshuo.com/?p=669查看关于更改的详细信息。

alt text (图片来源于网络)

JSONModel安装(Installation)

  • 使用CocoaPods安装,在podfile,添加一下内容,之后使用pod update更新
    pod 'JSONModel'
  • 使用Carthage安装
    github "jsonmodel/jsonmodel"

JSONModel使用手册(Manual)

  • 下载JSONModel库
  • 复制JSONModel子文件夹到您的Xcode项目
  • 添加SystemConfiguration.framework库

JSONModel基础用法(Basic Usage)

假设你的JSON格式是这样的:

    { "id": 10, "country": "Germany", "dialCode": 49, "isInEurope": true }
  • 创建一个JSONModel的子类
  • 在.h头文件中声明一些以json的key命名的属性
   @interface CountryModel : JSONModel@property (nonatomic) NSInteger id;@property (nonatomic) NSString *country;@property (nonatomic) NSString *dialCode;@property (nonatomic) BOOL isInEurope;@end

之后我们没有必要在.m文件中多做什么特殊的处理。

初始化数据模型:

   NSError *error;CountryModel *country = [[CountryModel alloc] initWithString:myJson error:&error];

如果验证JSON通过的话,将会通过json中的key的value值为CountryModel的id,country,dialCode,isInEurope的属性赋值。并且自动匹配相遇的类型。

实例

自动根据名称映射

   {"id": 123,"name": "Product name","price": 12.95}
   @interface ProductModel : JSONModel@property (nonatomic) NSInteger id;@property (nonatomic) NSString *name;@property (nonatomic) float price;@end

模型嵌套 (模型包含其他模型)

   {"orderId": 104,"totalPrice": 13.45,"product": {"id": 123,"name": "Product name","price": 12.95}}
   @interface ProductModel : JSONModel@property (nonatomic) NSInteger id;@property (nonatomic) NSString *name;@property (nonatomic) float price;@end@interface OrderModel : JSONModel@property (nonatomic) NSInteger orderId;@property (nonatomic) float totalPrice;@property (nonatomic) ProductModel *product;@end

模型集合collections

   {"orderId": 104,"totalPrice": 103.45,"products": [{"id": 123,"name": "Product #1","price": 12.95},{"id": 137,"name": "Product #2","price": 82.95}]}
   @protocol ProductModel;@interface ProductModel : JSONModel@property (nonatomic) NSInteger id;@property (nonatomic) NSString *name;@property (nonatomic) float price;@end@interface OrderModel : JSONModel@property (nonatomic) NSInteger orderId;@property (nonatomic) float totalPrice;@property (nonatomic) NSArray <ProductModel> *products;@end

注:NSArray的后尖括号包含的协议。这是不一样的目标C泛型系统。它们不是相互排斥的,而是为JSONModel工作,该协议必须到位。

嵌套键映射

   {"orderId": 104,"orderDetails": [{"name": "Product #1","price": {"usd": 12.95}}]}

@interface OrderModel : JSONModel
@property (nonatomic) NSInteger id;
@property (nonatomic) NSString *productName;
@property (nonatomic) float price;
@end@implementation OrderModel+ (JSONKeyMapper *)keyMapper
{return [[JSONKeyMapper alloc] initWithModelToJSONDictionary:@{@"id": @"orderId",@"productName": @"orderDetails.name",@"price": @"orderDetails.price.usd"}];
}@end

自动映射到snake_case

{"order_id": 104,"order_product": "Product #1","order_price": 12.95
}

@interface OrderModel : JSONModel
@property (nonatomic) NSInteger orderId;
@property (nonatomic) NSString *orderProduct;
@property (nonatomic) float orderPrice;
@end@implementation OrderModel+ (JSONKeyMapper *)keyMapper
{return [JSONKeyMapper mapperForSnakeCase];
}@end

可选属性Optional (就是说这个属性可以为null或者为空)

{"id": 123,"name": null,"price": 12.95
}
@interface ProductModel : JSONModel
@property (nonatomic) NSInteger id;
@property (nonatomic) NSString <Optional> *name;
@property (nonatomic) float price;
@property (nonatomic) NSNumber <Optional> *uuid;
@end

忽略属性 Ignored (就是JSONModel完全忽略这个属性)

{"id": 123,"name": null
}
@interface ProductModel : JSONModel
@property (nonatomic) NSInteger id;
@property (nonatomic) NSString <Ignore> *customProperty;
@end

设置标量类型可选optional

{"id": null
}
@interface ProductModel : JSONModel
@property (nonatomic) NSInteger id;
@end@implementation ProductModel+ (BOOL)propertyIsOptional:(NSString *)propertyName
{if ([propertyName isEqualToString:@"id"])return YES;return NO;
}@end

将model转成json

ProductModel *pm = [ProductModel new];
pm.name = @"Some Name";// convert to dictionary
NSDictionary *dict = [pm toDictionary];// convert to json
NSString *string = [pm toJSONString];

特定类型数据转换

@interface JSONValueTransformer (CustomNSDate)
@end@implementation JSONValueTransformer (CustomTransformer)- (NSDate *)NSDateFromNSString:(NSString *)string
{NSDateFormatter *formatter = [NSDateFormatter new];formatter.dateFormat = APIDateFormat;return [formatter dateFromString:string];
}- (NSString *)JSONObjectFromNSDate:(NSDate *)date
{NSDateFormatter *formatter = [NSDateFormatter new];formatter.dateFormat = APIDateFormat;return [formatter stringFromDate:date];
}@end

自定义 getters/setters

@interface ProductModel : JSONModel
@property (nonatomic) NSInteger id;
@property (nonatomic) NSString *name;
@property (nonatomic) float price;
@property (nonatomic) NSLocale *locale;
@end@implementation ProductModel- (void)setLocaleWithNSString:(NSString *)string
{self.locale = [NSLocale localeWithLocaleIdentifier:string];
}- (void)setLocaleWithNSDictionary:(NSDictionary *)dictionary
{self.locale = [NSLocale localeWithLocaleIdentifier:dictionary[@"identifier"]];
}- (NSString *)JSONObjectForLocale
{return self.locale.localeIdentifier;
}@end

自定义验证JSON

@interface ProductModel : JSONModel
@property (nonatomic) NSInteger id;
@property (nonatomic) NSString *name;
@property (nonatomic) float price;
@property (nonatomic) NSLocale *locale;
@property (nonatomic) NSNumber <Ignore> *minNameLength;
@end@implementation ProductModel- (BOOL)validate:(NSError **)error
{if (![super validate:error])return NO;if (self.name.length < self.minNameLength.integerValue){*error = [NSError errorWithDomain:@"me.mycompany.com" code:1 userInfo:nil];return NO;}return YES;
}@end

如果您需要查看详情JSONModel的使用请访问https://github.com/jsonmodel/jsonmodel ,以便下载最新代码进行研究使用。

学习记录,每天不停进步。

http://www.tj-hxxt.cn/news/11276.html

相关文章:

  • 网页设计属于ui范围吗东莞市网络seo推广服务机构
  • 内容网站最新好用的cms网页制作成品
  • 广西电网公司电网建设分公司seo网络营销案例分析
  • 推荐西安优秀的响应式网站建设公司百度服务中心人工客服
  • 做外挂的网站百度站长平台账号购买
  • 建筑企业招聘信息seo描述快速排名
  • 快速搭建网站视频百度app下载官方免费最新版
  • 网站生成工具seo软文是什么
  • 观澜专业做网站公司关键词优化上海
  • 如何查看域名以前是做什么网站的好用的搜索引擎有哪些
  • 百度和阿里哪个厉害做网站深圳百度首页优化
  • 网站后台信息管理怎么做永久免费google搜索引擎
  • 网站目录提交搜索热门关键词
  • 中信建设有限责任公司海外地位百度seo优化推广公司
  • 政府形象建设 网站更新佛山网站建设十年乐云seo
  • 单位做网站有哪些做seo的公司
  • 做58网站怎么赚钱网络营销岗位职责和任职要求
  • 福州网站设计培训百度联盟是什么
  • 百度网站建设是什么恩城seo的网站
  • 室内设计培训网站seo专业学校
  • 做网站需要买什么东西淘宝网站的推广与优化
  • 施工企业在施工过程中发现设计文件和图纸有差错的专业百度seo排名优化
  • 山东查询网站备案公司员工培训内容有哪些
  • 信誉好的网站建设重庆森林经典台词 凤梨罐头
  • 网站设计的趋势十大经典事件营销案例分析
  • 自己建立一个网站网页制作代码模板
  • 电商网站商品表设计方案整合营销网络推广
  • 最漂亮的网页seo工作
  • 网站建设实现功能国内最新的新闻
  • 如何做网站流量报告营销型高端网站建设