Swift 5:将API响应转为数组(拼接)及移除数组元素间的@
嘿,我来帮你解决这两个Swift 5的问题,直接上实用方案:
1. Swift 5中API响应转数组并完成拼接操作
首先得明确API响应的常见格式——一般是JSON数据,下面分解析和拼接两个环节说明:
步骤1:将API响应解析为数组
场景1:解析为字符串数组
如果API返回的是类似 ["file1.pdf", "file2.jpg"] 的JSON数组,用Swift原生的Codable解析最便捷:
// 假设你已经通过URLSession获取到API返回的data do { let stringArray = try JSONDecoder().decode([String].self, from: apiResponseData) print("解析后的数组:\(stringArray)") } catch { print("解析失败:\(error.localizedDescription)") }
场景2:解析为自定义模型数组
如果API返回的是结构化数据数组(比如文件信息集合),先定义对应模型再解析:
struct FileInfo: Codable { let fileName: String let fileUrl: String } // 解析代码 do { let fileArray = try JSONDecoder().decode([FileInfo].self, from: apiResponseData) print("解析后的文件数组:\(fileArray)") } catch { print("解析失败:\(error.localizedDescription)") }
步骤2:数组拼接操作
这里分两种常见需求:
- 数组合并:把多个数组合并为一个新数组
let array1 = ["doc1.pdf", "img1.jpg"] let array2 = ["doc2.pdf", "img2.png"] let combinedArray = array1 + array2 // 结果:["doc1.pdf", "img1.jpg", "doc2.pdf", "img2.png"]
- 数组元素拼接为字符串:将数组元素按需求拼接成单个字符串
let fileArray = ["/email5600@gmail.com_conemp.pdf", "uploadedFiles/email5600@gmail.com_p3037c.pdf"] // 无分隔符直接拼接 let joinedString = fileArray.joined() // 结果:"/email5600@gmail.com_conemp.pdfuploadedFiles/email5600@gmail.com_p3037c.pdf" // 用自定义分隔符拼接(比如逗号) let joinedWithComma = fileArray.joined(separator: ", ") // 结果:"/email5600@gmail.com_conemp.pdf, uploadedFiles/email5600@gmail.com_p3037c.pdf"
2. 移除指定字符串中数组元素间的@分隔符
你给出的字符串是:"/email5600@gmail.com_conemp.pdf,@,uploadedFiles/email5600@gmail.com_p3037c.pdf,@,profilepics/mj.tm@hotmail.com.jpeg",这里的元素分隔符是",@,"(注意前后的逗号),下面分场景处理:
场景1:分割为纯净元素数组(保留元素内的@)
let originalString = "/email5600@gmail.com_conemp.pdf,@,uploadedFiles/email5600@gmail.com_p3037c.pdf,@,profilepics/mj.tm@hotmail.com.jpeg" // 按",@,"分割成数组,元素内的邮箱@会被保留 let fileArray = originalString.components(separatedBy: ",@,") // 结果数组: // ["/email5600@gmail.com_conemp.pdf", "uploadedFiles/email5600@gmail.com_p3037c.pdf", "profilepics/mj.tm@hotmail.com.jpeg"]
场景2:直接移除分隔符得到拼接字符串
如果不需要数组,直接替换掉所有",@,"分隔符:
let cleanedString = originalString.replacingOccurrences(of: ",@,", with: "") // 结果: // "/email5600@gmail.com_conemp.pdfuploadedFiles/email5600@gmail.com_p3037c.pdfprofilepics/mj.tm@hotmail.com.jpeg"
场景3:分割后用其他分隔符重新拼接
比如用逗号替换原有的",@,":
let joinedString = fileArray.joined(separator: ", ") // 结果: // "/email5600@gmail.com_conemp.pdf, uploadedFiles/email5600@gmail.com_p3037c.pdf, profilepics/mj.tm@hotmail.com.jpeg"
内容的提问来源于stack exchange,提问作者Aneeq Shah
相关产品推荐
相关产品推荐

