2016 - 1 - 23 json转模型 常用的第三方框架

mac2022-06-30  22

一: 三个常用的框架

  1. Mantle 

  - 所有模型必须继承MTModel

  2. JSONModel

  - 所有模型必须继承JSONModel

  3.MJExtension

  - 不需要继承任何东西。

  - 代码:

 

// // TableViewController.m // json // // Created by Mac on 16/1/23. // Copyright © 2016年 Mac. All rights reserved. // #import "TableViewController.h" #import <UIImageView+WebCache.h> #import <MediaPlayer/MediaPlayer.h> #import "ZZVideo.h" #import <MJExtension.h> @interface TableViewController () @property (nonatomic, strong) NSArray *videos; @end @implementation TableViewController - (void)viewDidLoad { [super viewDidLoad]; NSURL *url = [NSURL URLWithString:@"http://120.25.226.186:32812/video"]; NSURLRequest *request = [NSURLRequest requestWithURL:url]; [NSURLConnection sendAsynchronousRequest:request queue:[NSOperationQueue mainQueue] completionHandler:^(NSURLResponse * _Nullable response, NSData * _Nullable data, NSError * _Nullable connectionError) { NSDictionary *dic = [NSJSONSerialization JSONObjectWithData:data options:kNilOptions error:nil]; self.videos = [ZZVideo mj_objectArrayWithKeyValuesArray:dic[@"videos"]]; // NSLog(@"%zd",_videos.count); [self.tableView reloadData]; }]; } #pragma mark - Table view data source - (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView { //#warning Incomplete implementation, return the number of sections return 1; } - (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section { //#warning Incomplete implementation, return the number of rows return self.videos.count; } - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath { static NSString *ID = @"video"; UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:ID]; ZZVideo *video = self.videos[indexPath.row]; cell.detailTextLabel.text = [NSString stringWithFormat:@"视频时长: %ld",(long)video.length]; cell.textLabel.text= video.name; NSString *image = [@"http://120.25.226.186:32812" stringByAppendingPathComponent:video.image]; [cell.imageView sd_setImageWithURL:[NSURL URLWithString:image] placeholderImage:nil]; return cell; } #pragma mark - 代理 - (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath { ZZVideo *video = self.videos[indexPath.row]; NSString *videoStr = [@"http://120.25.226.186:32812" stringByAppendingPathComponent:video.url]; MPMoviePlayerViewController *vc = [[MPMoviePlayerViewController alloc] initWithContentURL:[NSURL URLWithString:videoStr]]; [self presentViewController:vc animated:YES completion:nil]; } @end

 

  

二: 设计第三方框架需要考虑的地方

 1.侵入性:

   - 侵入性大就意味着项目很难离开这个框架

 2.易用性

   - 比如少量代码就可以实现很多功能

 3.扩展性

  - 很容易给框架增加新的功能

 

 

   

转载于:https://www.cnblogs.com/BJTUzhengli/p/5153834.html

相关资源:Revit导出JSON数据源代码
最新回复(0)