[ios]获取网络数据显示到列表上(连载1)
本帖最后由 莫问刀 于 2021-3-7 22:48 编辑## ios获取网络数据,ui tableview展示
- 主页代码
```
import AlamofireObjectMapper
import UIKit
import Alamofire
class ViewController: UIViewController ,UITableViewDelegate,UITableViewDataSource{
let cellId = "sob_loop"
var list = ()
private lazy var tableView :UITableView = {
let tab = UITableView(frame: CGRect(x: 0, y: 0, width: UIScreen.main.bounds.width, height: UIScreen.main.bounds.height), style: UITableView.Style.plain)
return tab
}()
let blogUrl = "http://moonlightshadow.cn:2020/portal/web_size_info/friend_link"
override func viewDidLoad() {
super.viewDidLoad()
//添加到主视图
view.addSubview(tableView)
//注册代{过}{滤}理
tableView.dataSource = self
tableView.delegate = self
//高度自动
tableView.rowHeight = UITableView.automaticDimension
tableView.register(CellLoopDetail.self, forCellReuseIdentifier: cellId)
//请求网络数据
httpGetLoop()
}
}
extension ViewController{
func httpGetLoop() {
Alamofire.request(blogUrl).responseObject { (response: DataResponse<LoopBean>) in
let weatherResponse = response.result.value
//print(weatherResponse?.message ?? "")
self.list = weatherResponse?.data ?? ()
self.tableView.reloadData()
//print("\(self.list.count)")
}
}
}
extension ViewController{
func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
return list.count
}
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
//item
let cell = tableView.dequeueReusableCell(withIdentifier: cellId, for: indexPath) as! CellLoopDetail
cell.setValueForCell(item: self.list)
return cell
}
}
```
- cell代码
```
//
//CellLoopDetail.swift
//sw-http
//
//Created by Alice on 2021/3/2.
//
import Foundation
import UIKit
import SnapKit
import Kingfisher
class CellLoopDetail: UITableViewCell {
private lazy var ivLoop :UIImageView = {
let img = UIImageView()
//比例,填充,超出界限,裁剪
img.contentMode = .scaleAspectFill
img.clipsToBounds = true
img.layer.cornerRadius = 6
img.layer.masksToBounds = true
return img
}()
private lazy var labTitle:UILabel = {
let lab = UILabel()
//单行显示
lab.lineBreakMode = NSLineBreakMode.byWordWrapping
lab.numberOfLines = 1
lab.textColor = ColorUtils.parser("#313131")
return lab
}()
private lazy var labDesc:UILabel = {
let lab = UILabel()
lab.lineBreakMode = NSLineBreakMode.byWordWrapping
lab.numberOfLines = 1
lab.textColor = ColorUtils.parser("#666666")
return lab
}()
override init(style: UITableViewCell.CellStyle, reuseIdentifier: String?) {
super.init(style: style, reuseIdentifier: reuseIdentifier)
addSubview(ivLoop)
addSubview(labTitle)
addSubview(labDesc)
ivLoop.snp.makeConstraints { (make) in
make.size.equalTo(50)
make.left.equalToSuperview().offset(10)
make.top.equalToSuperview().offset(10)
make.bottom.equalToSuperview().offset(-10)
}
labTitle.snp.makeConstraints { (make) in
make.top.equalTo(ivLoop.snp.top)
make.left.equalTo(ivLoop.snp.right).offset(10)
}
labDesc.snp.makeConstraints { (make) in
make.left.equalTo(ivLoop.snp.right).offset(10)
make.bottom.equalTo(ivLoop.snp.bottom)
}
}
required init?(coder: NSCoder) {
fatalError("init(coder:) has not been implemented")
}
func setValueForCell(item: Forecast){
let imagePath = "http://mp.moonlightshadow.cn:2020/admin/image/"
//设置轮播图的数据
labTitle.text = item.name
labDesc.text = item.id
//图片显示
if let img = item.logo {
print(img)
let url = URL(string: imagePath + img)
ivLoop.kf.setImage(with: url)
}
}
}
```
- 模型
```
//
//WeatherResponse.swift
//sw-http
//
//Created by Alice on 2021/3/2.
//
import Foundation
import ObjectMapper
class LoopBean: Mappable {
var success :Bool=false
var code :Int=0
var message : String=""
var data : ?
required init?(map: Map){
}
func mapping(map: Map) {
success <- map["success"]
code <- map["code"]
message <- map["message"]
data <- map["data"]
}
}
class Forecast: Mappable {
var id:String?
var name:String?
var logo:String?
var url:String?
var order:Int?
var state:String?
var createTime:String?
var updateTime:String?
required init?(map: Map){
}
func mapping(map: Map) {
id <- map["id"]
name <- map["name"]
logo <- map["logo"]
url <- map["url"]
order <- map["order"]
state <- map["state"]
createTime<- map["createTime"]
updateTime<- map["updateTime"]
}
}
```
这是源码地址
https://github.com/cat13954/IOSUiTableViewSample.git
后面会继续分享。
现在是自己学习,写一个app。
这个app demo包含了网络请求,json转模型,图片加载。
是学习笔记。
计划:今年写一个属于自己的app。 不懂 看着很高级的亚纸,爱了爱了,纯帮顶~~~
楼主加油~
ios应用是要mac机才能开发? 大猫King 发表于 2021-3-5 01:00
不懂 看着很高级的亚纸,爱了爱了,纯帮顶~~~
楼主加油~
谢谢额,这个是学习笔记有需要可以收藏 52jcool 发表于 2021-3-5 09:22
ios应用是要mac机才能开发?
最好是使用苹果电脑开发,现在也可以用黑苹果开发的。只是没那么方便的。
比如xcode开发工具的升级。或者系统升级==,因为黑苹果升级比较麻烦。如果是单纯学习可以用黑苹果的。
页:
[1]