Swift:音乐播放器实现(1)获取网络数据并显示
程序员文章站
2022-06-08 14:06:57
...
总体来说这个软件的实现难点更多的在UI界面……
第一步里先将获取到的网络数据显示。
首先API的获取:https://www.showapi.com/api/lookPoint/213/4
由这个网址获得
可以看到他必须要传的参数是appid,secret,还有topid,前两个进行注册并申请就可以获得,然后用CocoaPods在Xcode中导入Alamofire还有swityJSON,import进文件后先创建一个简单的请求来获得他返回的数据,将数据复制粘贴进https://jsoneditoronline.org/里面看他数组的分布,当然也可以先用Postman来获得网址返回的数据,清楚数据分布之后将获取的数据详细至你所需要的值,例如获取歌手在[“showapi_res_body”][“pagebean”][“songlist”]下面的数组中。
用swiftyJSON的功能将返回的数值提取成Xcode可以使用的形式,之后创建一个数组songlistArray来储存所获得的值,由于songlist下面还有很多数组,所以dic可以用他总的数组数量进行遍历,然后获取所有singername和songname的值。
func downLoadData(){
let paras = ["showapi_appid":appid,"showapi_sign":secret,"topid":"\(5)"]
Alamofire.request("https://route.showapi.com/213-4",method: .post,parameters:paras).responseJSON { response in
if let json = response.result.value {
let JSOnDictory = JSON(json)
let songlistArray = JSOnDictory["showapi_res_body"]["pagebean"]["songlist"].arrayValue
for dic in songlistArray{
let model = musicModel()
model.SingerName = dic["singername"].stringValue
model.SongName = dic["songname"].stringValue
self.models.add(model)
}
self.tableView.reloadData()
}
}
}
将TableView的行数与singername/songname相对应,就将每一个歌手和歌曲名字显示出来了。
override func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
// #warning Incomplete implementation, return the number of rows
return self.models.count
}
override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCell(withIdentifier: "List", for: indexPath) as! ListCell
let model:musicModel = self.models[indexPath.row] as! musicModel
cell.SingerName.text = model.SingerName
cell.SongName.text = model.SongName
return cell
}
其外的文件有一个ListCell文件来对应Lable去显示网络获取的数值,musicModel用于数据的存储