Swift 如何为搜索栏音乐专辑(乐队名称和专辑名称)创建逻辑?
这里有个问题。用户在文本字段中输入艺术家姓名和专辑标题,按下搜索按钮,找到的艺术品将显示在图像视图中。 文本字段中的艺术家姓名和专辑标题可以用以下符号分隔:“-”、“:”、“|”、“\”、“/”、“~” 例如:“女王-波希米亚狂想曲”,“披头士:修道院路”。我还有一个url,在这里我必须输入乐队名称和专辑名称以供请求:theaudiodb.com/api/v1/json/{APIKEY}/searchalbum.php?s={Artist name}&a={album name} 我已经使用函数searchBartextdendediting(searchBar:UISearchBar)创建了搜索栏Swift 如何为搜索栏音乐专辑(乐队名称和专辑名称)创建逻辑?,swift,http,uisearchbar,Swift,Http,Uisearchbar,这里有个问题。用户在文本字段中输入艺术家姓名和专辑标题,按下搜索按钮,找到的艺术品将显示在图像视图中。 文本字段中的艺术家姓名和专辑标题可以用以下符号分隔:“-”、“:”、“|”、“\”、“/”、“~” 例如:“女王-波希米亚狂想曲”,“披头士:修道院路”。我还有一个url,在这里我必须输入乐队名称和专辑名称以供请求:theaudiodb.com/api/v1/json/{APIKEY}/searchalbum.php?s={Artist name}&a={album name} 我已经使用函数
我想实现搜索栏文本字段逻辑,并为http请求创建正确的url。您最好使用正则表达式。看看这个答案,谢谢。我会努力的)
func searchBarTextDidEndEditing(_ searchBar: UISearchBar) {
let text = Array(searchBar.text!)
var bandName = ""
var albumName = ""
var isBandName = true
var isAlbumName = false
var albumNameArray = [String]()
for char in text {
if char != " " && char != "-" && isBandName && !isAlbumName{
bandName.append(char)
continue
}
if char != " " && char != "-" && isAlbumName && !isBandName{
albumName.append(char)
continue
}
if (char == "-" || char == " ") && !isAlbumName && isBandName{
isBandName = false
isAlbumName = true
continue
}
if char == " " && isAlbumName && !isBandName && albumName != ""{
albumNameArray.append(albumName)
albumName = ""
continue
}
if text.firstIndex(of: char) == text.count - 1 {
albumNameArray.append(albumName)
}
}
requestToServer(band: bandName, album: albumName)
print(bandName, albumNameArray)
}
func requestToServer(band: String, album: String?) {
var urlString = "https://theaudiodb.com/api/v1/json/1/searchalbum.php?s=\(band)"
if let albumName = album {
urlString += albumName
}
if let url = URL(string: urlString) {
let task = URLSession.shared.dataTask(with: url) { (data, response, err) in
guard let data = data else { return }
do {
print(String(data: data, encoding: String.Encoding.utf8))
}catch let error {
print(error)
}
}
task.resume()
}
}