[Swift通天遁地]四、网络和线程-(11)将服务器返回的JSON映射为实例对象

[Swift通天遁地]四、网络和线程-(11)将服务器返回的JSON映射为实例对象,第1张

概述本文将演示使用第三方类库中,将服务器返回的JSON映射为实例对象。 首先确保在项目中已经安装了所需的第三方库。 点击【Podfile】,查看安装配置文件。 1 platform :ios, ’12.0’2 use_frameworks!3 4 target ‘DemoApp‘ do5 source ‘https://github.com/CocoaPods/Specs.gi

本文将演示使用第三方类库中,将服务器返回的JsON映射为实例对象。

首先确保在项目中已经安装了所需的第三方库。

点击【Podfile】,查看安装配置文件。

1 platform :ios,’12.02 use_frameworks!3 4 target DemoApp do5     source https://github.com/CocoaPods/Specs.git6     pod Alamofire,~> 4.07     pod AlamofireObjectMapper,~> 4.08 end

根据配置文件中的相关配置,安装第三方库。

然后点击打开【DemoApp.xcworkspace】项目文件。

接着创建一个类文件,作为返回数据被映射的实例对象。

在项目文件夹【DemoApp】上点击鼠标右键,d出右键菜单。

【New file】->【Cocoa touch Class】->【Next】->

【Class】:Forecast

【Subclass of】:Mappable

【Language】:Swift

->【Next】->【Create】

 1 //将新建文件引入的默认类库进行修改。 2 //修改成上文安装的映射库。 3 import ObjectMapper 4  5 class Forecast: Mappable 6 { 7     //添加三个属性 8     var day: String? 9     var temperature: Int?10     var conditions: String?11     12     //添加一个必须实现的初始化方法13     required init?(map: Map)14     {15         16     }17     18     //添加一个映射方法19     func mapPing(map: Map)20     {21         //依次将Map中的内容,映射到对象的三个属性22         day <- map["day"]23         temperature <- map["temperature"]24         conditions <- map["conditions"]25     }26 }

继续创建一个类文件,作为返回数据被映射的实例对象。

在项目文件夹【DemoApp】上点击鼠标右键,d出右键菜单。

【New file】->【Cocoa touch Class】->【Next】->

【Class】:WeatherResponse

【Subclass of】:Mappable

【Language】:Swift

->【Next】->【Create】

 1 //将新建文件引入的默认类库进行修改。 2 //修改成上文安装的映射库。 3 import ObjectMapper 4  5 class WeatherResponse: Mappable 6 { 7     //添加一个字符串的属性,表示天气情况的地理位置 8     var location: String? 9     //创建一个对象数组,表示三天内的天气情况。10     //对象所属的类,就是上文创建的包含三个属性的天气预报类。11     var threeDayForecast: [Forecast]?12     13     //添加一个必须实现的初始化方法14     required init?(map: Map)15     {16         17     }18     19     //添加一个映射方法20     func mapPing(map: Map)21     {22         //依次将Map中的内容,映射到对象的两个属性23         location <- map["location"]24         threeDayForecast <- map["three_day_forecast"]25     }26 }

在项目导航区,打开视图控制器的代码文件【VIEwController.swift】

现在开始编写代码,访问一个天气预报的数据接口,

并将服务器返回的数据,映射成自定义的对象。

 1 import UIKit 2 //在当前的类文件中,引入已经安装的第三方类库 3 import Alamofire 4 import AlamofireObjectMapper 5  6 class VIEwController: UIVIEwController { 7  8     overrIDe func vIEwDIDLoad() { 9         super.vIEwDIDLoad()10         // Do any additional setup after loading the vIEw,typically from a nib.11         //处理服务器返回对象12         responSEObjectExample()13 14         //处理服务器返回数组15         responseArrayExample()16     }17     18     //添加一个方法,用来处理服务器返回对象的情况。19     func responSEObjectExample()20     {21         //初始化一个字符串常量,作为服务器的接口。22         let URL = "https://raw.githubusercontent.com/tristanhimmelman/AlamofireObjectMapper/d8bb95982be8a11a2308e779bb9a9707ebe42ede/sample_Json"23         24         //调用网络 *** 作库的网络请求方法,访问该接口,25         //并将返回的数据,转换成自定义的对象。26         Alamofire.request(URL).responSEObject {27             (response: DataResponse<WeatherResponse>) in28             29             //获得转换后的对象,30             let weatherResponse = response.result.value31             //并在控制台输出对象的地理位置32             print(weatherResponse?.location)33             34             //获得对象的包含未来三日天气情况的数组属性35             if let threeDayForecast = weatherResponse?.threeDayForecast36             {37                 //遍历数组38                 for forecast in threeDayForecast39                 {40                     //在控制台输出日期信息41                     print("forecast.day:\(forecast.day)")42                     //在控制台输出温度信息43                     print("forecast.temperature:\(forecast.temperature)")44                 }45             }46         }47     }48     49     //添加一个方法,处理返回数组50     func responseArrayExample()51     {52         //初始化一个字符串常量,作为服务器的接口。53         let URL = "https://raw.githubusercontent.com/tristanhimmelman/AlamofireObjectMapper/f583be1121dbc5e9b0381b3017718a70c31054f7/sample_array_Json"54         55         //调用网络 *** 作库的网络请求方法,访问该接口,56         //并将返回的数据,转换成自定义的对象。57         Alamofire.request(URL).responseArray {58             (response: DataResponse<[Forecast]>) in59             60             //获得服务器返回的数据61             let forecastArray = response.result.value62             63             //处理服务器返回的数组64             if let forecastArray = forecastArray65             {66                 //遍历数组67                 for forecast in forecastArray68                 {69                     //在控制台输出日期信息70                     print("forecast.day:\(forecast.day)")71                     //在控制台输出温度信息72                     print("forecast.temperature:\(forecast.temperature)")73                 }74             }75         }76     }77 78     overrIDe func dIDReceiveMemoryWarning() {79         super.dIDReceiveMemoryWarning()80         // dispose of any resources that can be recreated.81     }82 }
总结

以上是内存溢出为你收集整理的[Swift通天遁地]四、网络和线程-(11)将服务器返回的JSON映射为实例对象全部内容,希望文章能够帮你解决[Swift通天遁地]四、网络和线程-(11)将服务器返回的JSON映射为实例对象所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/web/1021158.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-23
下一篇 2022-05-23

发表评论

登录后才能评论

评论列表(0条)

保存