相关文章推荐
年轻有为的冰淇淋  ·  Oracle、SQLServer ...·  8 月前    · 
很酷的莴苣  ·  不能将类型“{ title: ...·  1 年前    · 
豪气的沙滩裤  ·  Connect to a ...·  1 年前    · 

Alamofire是IOS开发时高效的网络第三方工具库,有时我们需要将本地的一些数据调用API上传到云端,再接收处理完成后的结果,在这个过程中,最终我们需要的信息是以JSON串进行返回的。
下面,我将以一个单词信息查询API为例,演示Alamofire的使用方法。
首先列出该API返回的JSON串格式:

"word": "cell", "accent": "/sel/", "mean_cn": "n.\u7ec6\u80de\uff1b\u5c0f\u9694\u95f4", "mean_en": "the smallest part of an animal or plant that is able to function independently", "sentence": "White blood cells help protect the body against viruses.", "sentence_trans": "\u767d\u7ec6\u80de\u53ef\u4ee5\u4fdd\u62a4\u8eab\u4f53\uff0c\u6d88\u706d\u75c5\u6bd2\u3002", "sentence_phrase": "White blood cells", "word_etyma": "", "cloze_data": {"syllable": "cell", "cloze": "c[el]l", "options": ["al|le|nl|ol"], "tips": [["ovic[el]l", "enc[el]l"]]}

对于类似格式的JSON串可能会有很多种处理方法,这里给出一种已测试可行且直观的处理方法。

let url = ""
Alamofire.AF.request(url).responseData { (response ) in
  if response.error == nil{
    let jsonData=response.value
    let dict = try? JSONSerialization.jsonObject(with: jsonData!, options: .mutableContainers)
    if(dict != nil){
      let value : NSDictionary = dict as! NSDictionary
      if value["sentence"] != nil,value["sentence_trans"] != nil {
        let accent : String = value["accent"] as! String
        let sentence : String = value["sentence"] as! String
        let sentence_trans : String = value["sentence_trans"] as! String

接下来将对上述代码进行补充。
首先是对网络地址的定义,这是你发出请求的地址,在浏览器中输入该地址,应该直接出现JSON串,即你的请求结果。后面使用了一个闭包,为的是等待解析结果,在这个请求周期结束以后,这个闭包还会继续等待执行,直到请求的结果被装入变量response,闭包开始进行下一步处理。

let jsonData=response.value
let dict = try? JSONSerialization.jsonObject(with: jsonData!, options: .mutableContainers)

这两句代码是解析结果的关键,主要是通过了JSONSerialization这样一个内置类的函数,将response中的Data数据储存类强制转换成了字典。这样,将结果转换成字典后只需要简单的映射就可以获取信息了。

Alamofire是IOS开发时高效的网络第三方工具库,有时我们需要将本地的一些数据调用API上传到云端,再接收处理完成后的结果,在这个过程中,最终我们需要的信息是以JSON串进行返回的。下面,我将以一个单词信息查询API为例,演示Alamofire的使用方法。首先列出该API返回的JSON串格式:{ "word": "cell", "accent": "/sel/", "mean_cn": "n.\u7ec6\u80de\uff1b\u5c0f\u9694\u95f4", SessionManager默认由default返回一个单例对象,里面配置了默认的URLSessionConfiguration和defaultHTTPHeaders。 public static let `default`: SessionManager = { let configuration = URL...
文章目录Alamofire源码解析一、Alamofire目录结构二、使用的基本流程 (不讲解基本使用,从源码解析)1. 发起请求的源码 (举例:普通请求流程)2. SessionManager 的关键点解析3. SessionManager , 发起请求关键代码4. SessionDelegate , 收到请求关键代码5. TaskDelegate , 收到请求的关键代码5. 数据序列化的工作。 ResponseSerialization类,关键代码总结 Alamofire源码解析 解析版本: Ala
跟不上时代的人突然间走在了时代的前列,果然有别样的风景。首先鄙视一下AFNetworking。这个东西实在太难用了。不想封装都不行,要不写一大堆代码。NSURL *URL = [NSURL URLWithString:@"http://example.com/resources/123.json"]; AFHTTPSessionManager *manager = [AFHTTPSessionMan
相关文章系列:(文章代码均已升级至Swift3) [当前文章] Swift - HTTP网络操作库Alamofire使用详解1(配置,以及数据请求) Swift - HTTP网络操作库Alamofire使用详解2(文件上传) Swift - HTTP网络
使用Alamofire实现了JSON数据的获取 首先是导入Alamofire包 前往https://github.com/Alamofire/Alamofire获取最新版本 解压完成后将其中的Alamofire.xcodeproj文件copy到你的工程文件下 然后在工程的General -> Embedded Binaries点击+号 导入iOS用的Alamofire框架 后面改为option
/// A dictionary of parameters to apply to a `URLRequest`. public typealias Parameters = [String: Any] open func request(_ convertible: URLConvertible,
看一段代码 // 通过刷卡时保存的卡的信息得到对应此Order相关的信息 class func fromCardInfoGetOrderInfos(cardLast:String, beginDate:String, endDate:String, complete: @escaping ([OrderInfoList])->Void) { if let va...
(test工程+源码注释工程)https://www.dropbox.com/sh/v7poaxekotxlaf1/AADQb7NbrrfHXJLrBt1Q51vVa?dl=0 整体的流程图 创建Session用来发送请求,可以自定义创建,也可以直接使用AF单例,默认的Session来发送请求 外部调用request()方法,传入URLConvertible,创建Request对象 内部开始先用URLConvertible来创建URLRequestConvertible对象 用URLRe 有时候,我们会根据现实中的事物来对程序中的某个业务关系进行抽象,这句话很难理解。在Alamofire中,使用Response来描述请求后的结果。我们都知道Alamofire返回的数据可以经过特殊的处理,比如说序列化,那么我们应该如何在Response中获取到这些类型不同的数据呢? 假如说序列化后的数据是data,最直接的想法就是把data设置为Any类型,在实... 把解压文件直接拖拽到项目的文件夹内 (桌面的文件夹内 而不是Xcode内) 然后在Xcode文件夹双指辅助点按 ,选择Add files to “项目名称” 添加 Alamofile.xcodeproj 以下为ViewController.swift 链接:https://pan.baidu.com...
VHDL是一种硬件描述语言,可以用于设计数字电路和系统。并转换器可以将行数据转换为并行数据,或将并行数据转换为行数据。下面是一个简单的8位并转换器的VHDL代码示例: ```vhdl entity serpar is port (in_ser: in std_logic; in_clk: in std_logic; out_par: out std_logic_vector(7 downto 0); out_clk: out std_logic); end serpar; architecture Behavioral of serpar is signal count: integer range 0 to 7 := 0; signal ser_data: std_logic_vector(7 downto 0) := (others => '0'); begin process(in_clk) begin if rising_edge(in_clk) then -- Shift in serial data ser_data <= ser_data(6 downto 0) & in_ser; -- Increment counter count <= count + 1; -- Output parallel data and reset counter if count = 7 then out_par <= ser_data; count <= 0; out_clk <= not out_clk; end if; end if; end process; end Behavioral; 这个并转换器具有一个输入端口in_ser,一个时钟输入in_clk,一个8位并行输出端口out_par和一个时钟输出端口out_clk。在每个时钟上升沿时,它将行输入数据in_ser向左移动一位,并将其存储在一个8位寄存器中。同时,计数器count增加1。当计数器达到7时,它将寄存器中的数据并行输出到out_par,并将计数器复位为0。此外,它还会将out_clk输出反转以控制外部设备。 这只是一个简单的示例,实际上,并转换器可能具有更复杂的功能和控制逻辑。