IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 移动开发 -> JSONModel -> 正文阅读

[移动开发]JSONModel


JSOMNModel库的导入

  • 终端输入:cd +项目地址
  • 终端输入:touch PodFile
  • 打开项目工程文件夹
  • 在Pod文件内输入:
  • platform :ios, ‘7.0’
    target ‘你的项目工程名字’ do
    pod ‘JSONModel’
    end
  • 保存并关闭Pod文件
  • 终端输入:pod install
  • 等待安装完成
  • 打开后缀为.xcw的文件即可使用JSONModel库

在导入JSONModel库的过程中,可能会出现这种情况,我是重新创建了一个文件进行导入,就导入成功了。如果出现这种情况,可以试试换一个网或者重新创建一个工程进行导入。
在这里插入图片描述

JSONModel的一些介绍

JSONModel是使用OC写的开源库,它包含了接受发送,解析JSON数据,用JSON数据驱动初始化类,检验JSON和嵌套模型等功能。
JSON是json转model的第三方开源库,当我们向服务器发送一个请求,可以通过JSONModel把数据转化成属性,使用会非常方便

JSONModel的使用

  • 这个是一个网络接口,我们进行网络请求

https://news-at.zhihu.com/api/4/news/latest

  • 在网站上进行编码格式转换

https://www.json.cn

  • 转换到的结果

在这里插入图片描述
在这里插入图片描述

可以看到要解析的数据有一个data字符串,两个数组。

//  Model.h
//  JsonModel
//
//
@protocol storiesModel

@end

@protocol top_StoriesModel

@end
#import "JSONModel.h"

NS_ASSUME_NONNULL_BEGIN

@interface storiesModel : JSONModel
@property (nonatomic, copy) NSString* image_hue;
@property (nonatomic, copy) NSString* title;
@property (nonatomic, copy) NSString* url;
@property (nonatomic, copy) NSString* hint;
@property (nonatomic, copy) NSString* ga_prefix;
@property (nonatomic, copy) NSArray* images;
@end

@interface top_StoriesModel : JSONModel
@property (nonatomic, copy) NSString* image_hue;
@property (nonatomic, copy) NSString* title;
@property (nonatomic, copy) NSString* url;
@property (nonatomic, copy) NSString* hint;
@property (nonatomic, copy) NSString* ga_prefix;
@property (nonatomic, copy) NSString* image;
@property (nonatomic, copy) NSString* type;
@end

@interface Model : JSONModel
@property (nonatomic, copy) NSString* date; // 三个同类型的
@property (nonatomic, copy) NSArray<storiesModel>* stories;
@property (nonatomic, copy) NSArray<top_StoriesModel>* top_stories;
@end

NS_ASSUME_NONNULL_END



//  Model.m
//  JsonModel
//
//

#import "Model.h"
@implementation storiesModel
+ (BOOL)propertyIsOptional:(NSString *)propertyName {
    return YES;
}
@end

@implementation top_StoriesModel

+ (BOOL)propertyIsOptional:(NSString *)propertyName {
    return YES;
}
@end
@implementation Model
+ (BOOL)propertyIsOptional:(NSString *)propertyName {
    return YES;
}
@end

//  ViewController.h
//  JsonModel
//
//

#import <UIKit/UIKit.h>
#import "Model.h"
@interface ViewController : UIViewController

@property (nonatomic, strong) top_StoriesModel* Model;
@end

//  ViewController.m
//  JsonModel
//
//

#import "ViewController.h"
#import "Model.h"
//#import "Manager.h"
@interface ViewController ()

@end

@implementation ViewController

- (void)viewDidLoad {
    [super viewDidLoad];
    NSString *json = @"https://news-at.zhihu.com/api/4/news/latest";
            json = [json stringByAddingPercentEncodingWithAllowedCharacters:[NSCharacterSet URLQueryAllowedCharacterSet]];
            NSURL *testUrl = [NSURL URLWithString:json];
            NSURLRequest *testRequest = [NSURLRequest requestWithURL:testUrl];
            NSURLSession *testSession = [NSURLSession sharedSession];
            NSURLSessionDataTask *testDataTask = [testSession dataTaskWithRequest:testRequest completionHandler:^(NSData * _Nullable data, NSURLResponse * _Nullable response, NSError * _Nullable error) {
                Model* JsonModelX = [[Model alloc] initWithData:data error:nil];
                NSLog(@"%@", JsonModelX.date);
                //NSLog(@"%@",self.Model.url);
            }];
            //任务启动
            [testDataTask resume];
}


@end

在这里插入图片描述

//  Manager.h
//  JsonModel
//
//

#import <Foundation/Foundation.h>
#import "Model.h"
NS_ASSUME_NONNULL_BEGIN

typedef void (^TestSucceedBlock) (Model* ViewModel);
typedef void (^ErrorBlock) (NSError* error);
@interface Manager : NSObject
+ (instancetype) shareManger;
- (void) makeData:(TestSucceedBlock) succeedBlock error:(ErrorBlock) errorBlock;
@property (nonatomic, strong) top_StoriesModel* Model;
@end

NS_ASSUME_NONNULL_END

//  Manager.m
//  JsonModel
//
//

#import "Manager.h"

static Manager* manager = nil;
@implementation Manager
+ (instancetype) shareManger {
    if (!manager) {
        static dispatch_once_t onceToken;
        dispatch_once(&onceToken, ^{
            manager = [[Manager alloc] init];
        });
    }
    return manager;
}
- (void)makeData:(TestSucceedBlock)succeedBlock error:(ErrorBlock)errorBlock {
    NSString *json = @"https://news-at.zhihu.com/api/4/news/latest";
        json = [json stringByAddingPercentEncodingWithAllowedCharacters:[NSCharacterSet URLQueryAllowedCharacterSet]];
        NSURL *testUrl = [NSURL URLWithString:json];
        NSURLRequest *testRequest = [NSURLRequest requestWithURL:testUrl];
        NSURLSession *testSession = [NSURLSession sharedSession];
        NSURLSessionDataTask *testDataTask = [testSession dataTaskWithRequest:testRequest completionHandler:^(NSData * _Nullable data, NSURLResponse * _Nullable response, NSError * _Nullable error) {
            if (error == nil) {
                Model* JsonModelX = [[Model alloc] initWithData:data error:nil];
                succeedBlock(JsonModelX);
            } else {
                errorBlock(error);
            }
        }];
        [testDataTask resume];
}
@end

//  ViewController.h
//  JsonModel
//
//

#import <UIKit/UIKit.h>
#import "Model.h"
@interface ViewController : UIViewController

@property (nonatomic, strong) top_StoriesModel* Model;
@end


//  ViewController.m
//  JsonModel
//
//

#import "ViewController.h"
#import "Model.h"
#import "Manager.h"
@interface ViewController ()

@end

@implementation ViewController

- (void)viewDidLoad {
    [super viewDidLoad];
    [[Manager shareManger]makeData:^(Model * _Nonnull ViewModel) {
        NSLog(@"%@", ViewModel.stories[1]);
    } error:^(NSError * _Nonnull error) {
        NSLog(@"请求失败!");
    }];
}


@end

在这里插入图片描述

  移动开发 最新文章
Vue3装载axios和element-ui
android adb cmd
【xcode】Xcode常用快捷键与技巧
Android开发中的线程池使用
Java 和 Android 的 Base64
Android 测试文字编码格式
微信小程序支付
安卓权限记录
知乎之自动养号
【Android Jetpack】DataStore
上一篇文章      下一篇文章      查看所有文章
加:2022-10-17 12:46:08  更:2022-10-17 12:46:46 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年5日历 -2024/5/19 22:22:27-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码