swift3.0获取网络数据 获取数据怎么装进模型

1381人阅读
swift(10)
JSON -& Model、Dictionary -& Model
文中网络用Alamofire,JSON解析用SwiftyJSON,
生成Model文件借助 JSONExport。
后面也有自己写的一个工具类,可以生成自己想要的Model,如:加上前缀
模型类:( JSON -& Model )
import Foundation
SwiftyJSON
struct TestModel{
var my_detail = ""
var my_discount = 0
var my_etime : String!
var my_expressPrice : Int!
var my_expressType : String!
var newPrice : Double!
var my_thumbnailUrls : [ThumbnailUrl]!
init(fromJson json: JSON!){
if json == nil{
my_detail = json["detail"].stringValue
my_discount = json["discount"].intValue
my_etime = json["etime"].stringValue
my_expressPrice = json["expressPrice"].intValue
my_expressType = json["expressType"].stringValue
my_newPrice = json["newPrice"].floatValue
my_thumbnailUrls = [ThumbnailUrl]()
let thumbnailUrlsArray = json["thumbnailUrls"].arrayValue
for thumbnailUrlsJson in thumbnailUrlsArray{
let value = ThumbnailUrl(fromJson: thumbnailUrlsJson)
thumbnailUrls.append(value)
import Foundation
class ThumbnailUrl{
var my_url : String!
* Instantiate the instance using the passed json values to set the properties values
init(fromJson json: JSON!){
if json == nil{
my_url = json["url"].stringValue
JSONExport工具
模型类:( 字典 -& Model )
self.dataDict.my_itemName
//转模型:
for item in dicts {
datas.append(Model.init(dict: item))
import Foundation
struct Model {
var my_price = 0.0
var my_itemSummary = ""
var my_period = 0
var my_thumbnailUrls = [ImageUrlModel]()
init(dict:[String:AnyObject]) {
//因为给属性设置了前缀,所以并不能使用这一方法自动匹配,需要手动书写
//setValuesForKeysWithDictionary(dict)
my_price = dict["price"] as? Double ?? 0.0
my_itemSummary = dict["itemSummary"] as? String ?? ""
my_period = dict["period"] as? Int ?? 0
//字典中还有数组,直接转模型
if let imageDict = dict["thumbnailUrls"] as? [[String:String]] {
for item in imageDict {
my_thumbnailUrls.append(ImageUrlModel(dict: item))
//my_thumbnailUrls = dict["thumbnailUrls"] as? [[String:String]] ?? [["":""]]
如果要一个一个属性手动敲进去,未免太麻烦了。因此写了一个工具类,只要将打印出来的复制黏贴就可以,只要在必要的地方进行修改。
现在将字典转为模型,只要
LCDModelTool.modelDefault("my", dict: dict)
struct LCDModelTool {
* 没有通过第三方库 — — 字典转模型
直接将打印板中打印出来的东西黏贴到模型类里面就可以
* 适用于一般的字典结构,当字典结构比较复杂的时候只需要针对部分进行修改
* keyPrdfix : 自己想要定义的前缀
* dict : 需要转 model 的字典
* 使用 :LCDModelTool.modelDefault("my", dict: dict as! [String : AnyObject])
static func modelDefault(keyPrdfix:NSString, dict:[String:AnyObject]) {
print("==========&")
for (dictKey, dictVale) in dict {
if dictVale is [AnyObject]{
print("///\nvar \(keyPrdfix)_\(dictKey) = [String]()")
if dictVale is [String:AnyObject]{
print("///\nvar \(keyPrdfix)_\(dictKey) = [String:AnyObject]() ")
if dictVale is String{
print("///\nvar \(keyPrdfix)_\(dictKey) = \"\" ")
if dictVale is Double{
print("///\nvar \(keyPrdfix)_\(dictKey) = 0.0 ")
print("\n");
print("init() {}")
print("\n");
print("init(dict:[String:AnyObject]) {")
for (dictKey, dictVale) in dict {
if dictVale is [AnyObject]{
print("\(keyPrdfix)_\(dictKey) = dict[\"\(dictKey)\"] as? [AnyObject] ?? []
if dictVale is [String:AnyObject]{
print("\(keyPrdfix)_\(dictKey) = dict[\"\(dictKey)\"] as? [String:AnyObject] ?? [:]")
if dictVale is String{
print("\(keyPrdfix)_\(dictKey) = dict[\"\(dictKey)\"] as? String ?? \"\"
if dictVale is Double{
print("\(keyPrdfix)_\(dictKey) = dict[\"\(dictKey)\"] as? Double ?? 0.0
print("}")
print("\n==========&@end\n");
&&相关文章推荐
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:32352次
排名:千里之外
原创:18篇
(3)(3)(3)(3)(4)(1)(1)更多频道内容在这里查看
爱奇艺用户将能永久保存播放记录
过滤短视频
暂无长视频(电视剧、纪录片、动漫、综艺、电影)播放记录,
按住视频可进行拖动
&正在加载...
&正在加载...
抱歉,本页暂无内容!
{{ each data as item index}}
{{ each data as item index}}
{{if item.isLast}}
&正在加载...
&正在加载...
&正在加载...
{{ each data as item index}}
{{item.playcount}}
把视频贴到Blog或BBS
当前浏览器仅支持手动复制代码
视频地址:
flash地址:
html代码:
通用代码:
通用代码可同时支持电脑和移动设备的分享播放
收藏成功,可进入查看所有收藏列表
方式1:用手机看
用爱奇艺APP或微信扫一扫,在手机上继续观看:
方式2:一键下载至手机
限爱奇艺安卓6.0以上版本
使用微信扫一扫,扫描左侧二维码,下载爱奇艺移动APP
其他安装方式:手机浏览器输入短链接http://71.am/udn
下载安装包到本机:&&
设备搜寻中...
请确保您要连接的设备(仅限安卓)登录了同一爱奇艺账号 且安装并开启不低于V6.0以上版本的爱奇艺客户端
连接失败!
请确保您要连接的设备(仅限安卓)登录了同一爱奇艺账号 且安装并开启不低于V6.0以上版本的爱奇艺客户端
部安卓(Android)设备,请点击进行选择
请您在手机端下载爱奇艺移动APP(仅支持安卓客户端)
使用微信扫一扫,下载爱奇艺移动APP
其他安装方式:手机浏览器输入短链接http://71.am/udn
下载安装包到本机:&&
爱奇艺云推送
请您在手机端登录爱奇艺移动APP(仅支持安卓客户端)
使用微信扫一扫,下载爱奇艺移动APP
180秒后更新
打开爱奇艺移动APP,点击“我的-扫一扫”,扫描左侧二维码进行登录
没有安装爱奇艺视频最新客户端?
爸爸去哪儿2游戏 立即参与
30秒后自动关闭
36-表情数据模型的回顾
播放量数据:快去看看谁在和你一起看视频吧~
{{each data}}
抱歉,没有“{{feature}}”的其他视频了.
&正在加载...
&正在加载...
&正在加载...
&正在加载...
&正在加载...
&正在加载...
{{ each data as item index}}
{{ each data as item index}}
Copyright (C) 2017
All Rights Reserved
您使用浏览器不支持直接复制的功能,建议您使用Ctrl+C或右键全选进行地址复制
安装爱奇艺视频客户端,
马上开始为您下载本片
5秒后自动消失
&li data-elem="tabtitle" data-seq="{{seq}}"&
&a href="javascript:void(0);"&
&span>{{start}}-{{end}}&/span&
&li data-downloadSelect-elem="item" data-downloadSelect-selected="false" data-downloadSelect-tvid="{{tvid}}"&
&a href="javascript:void(0);"&{{pd}}&/a&
选择您要下载的《》剧集:
您使用浏览器不支持直接复制的功能,建议您使用Ctrl+C或右键全选进行地址复制swift3.0 存取json数据到沙盒
时间: 18:55:32
&&&& 阅读:15
&&&& 评论:
&&&& 收藏:0
标签:&&&&&&&&&&&&&&&&&&&&&&&&&&&
& & & & & & & & & &&do {
& & & & & & & & & & & & //将json保存到本地
& & & & & & & & & & & & let jsonData = try JSONSerialization.data(withJSONObject: dict, options: .prettyPrinted)
& & & & & & & & & & & & // here "jsonData" is the dictionary encoded in JSON data
& & & & & & & & & & & & let data = jsonData as NSData
& & & & & & & & & & & & data.write(toFile: filePath, atomically: true)
& & & & & & & & &
& & & & & & & & & & & & //构建文件路径
& & & & & & & & & & & & let filePath:String = NSHomeDirectory() + "/Documents/imagetovideo.json"
& & & & & & & & & & & & //读取json
& & & & & & & & & & & & var loaddata=NSData(contentsOfFile: filePath)
& & & & & & & & & & & & if loaddata != nil
& & & & & & & & & & & & {
& & & & & & & & & & & & & & let jData=loaddata as! Data
& & & & & & & & & & & & & & let decoded = try JSONSerialization.jsonObject(with: jData, options: [])
& & & & & & & & & & & & & & print("译码:",decoded)
&& & & & & & & & & & & & & &
& & & & & & & & & & & & }
& & & & & & & & & & } catch {
& & & & & & & & & & & & print(error.localizedDescription)
& & & & & & & & & & }标签:&&&&&&&&&&&&&&&&&&&&&&&&&&&
&&国之画&&&& &&&&chrome插件
版权所有 京ICP备号-2
迷上了代码!

我要回帖

更多关于 swift 获取网页数据 的文章

 

随机推荐