Swift写网易云搜索界面
时间: 2023-06-30 19:05:08 浏览: 48
以下是一个简单的 Swift 代码示例,用于创建一个搜索界面,该界面可以使用网易云音乐的 API 搜索歌曲并显示结果。
```swift
import UIKit
class ViewController: UIViewController, UITableViewDataSource, UITableViewDelegate, UISearchBarDelegate {
@IBOutlet weak var tableView: UITableView!
@IBOutlet weak var searchBar: UISearchBar!
var searchResults: [String] = []
override func viewDidLoad() {
super.viewDidLoad()
tableView.dataSource = self
tableView.delegate = self
searchBar.delegate = self
}
func searchBarSearchButtonClicked(_ searchBar: UISearchBar) {
guard let searchText = searchBar.text else { return }
searchSong(query: searchText)
}
func searchSong(query: String) {
let urlString = "http://music.163.com/api/search/get/web?csrf_token=&type=1&s=\(query)&offset=0&total=true&limit=50"
let url = URL(string: urlString)
let session = URLSession.shared
let task = session.dataTask(with: url!) { data, response, error in
if error != nil {
print("Error: \(error!.localizedDescription)")
}
else {
do {
let json = try JSONSerialization.jsonObject(with: data!, options: []) as! [String: Any]
let result = json["result"] as! [String: Any]
let songs = result["songs"] as! [[String: Any]]
self.searchResults.removeAll()
for song in songs {
let name = song["name"] as! String
let artist = song["artists"] as! [[String: Any]]
let artistName = artist[0]["name"] as! String
self.searchResults.append("\(name) - \(artistName)")
}
DispatchQueue.main.async {
self.tableView.reloadData()
}
}
catch {
print("Error: \(error.localizedDescription)")
}
}
}
task.resume()
}
func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
return searchResults.count
}
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCell(withIdentifier: "cell", for: indexPath)
cell.textLabel?.text = searchResults[indexPath.row]
return cell
}
}
```
该代码使用了网易云音乐 API 进行搜索,并将结果显示在一个表格视图中。用户可以在搜索栏中输入查询字符串并点击“搜索”按钮,以触发搜索操作。搜索结果将显示在表格视图中,每个结果都显示歌曲名称和艺术家名称。