本文将演示使用第三方类库中,将服务器返回的JsON映射为实例对象。
首先确保在项目中已经安装了所需的第三方库。
点击【Podfile】,查看安装配置文件。
1 platform :ios,’12.0’2 use_frameworks!3 4 target ‘DemoApp‘ do5 source ‘https://github.com/CocoaPods/Specs.git‘6 pod ‘Alamofire‘,‘~> 4.0‘7 pod ‘AlamofireObjectMapper‘,‘~> 4.0‘8 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映射为实例对象所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)