json - 使用参数 Swift 从 URL 获取数据
问题描述
我需要从 url 获取数据。例如,使用邮递员,如果我尝试使用我的私人获取请求url = "http://127.0.0.1/MyWebService/api/fetch_image.php"
并添加参数:id_key -> id_team in value -> 2,软件会将其返回给我:
{"image_team":[{"id":1,"img_path":"http://localhost/MyWebService/images/Schermata.png","id_team":2},{"id":2,"img_path" :"http://localhost/MyWebService/images/Schermata.png","id_team":2},{"id":3,"img_path":"http://localhost/MyWebService/images/Schermata.png" ,"id_team":2}]}
现在在 Swift 中,我编写了这些类:
class ClassJsonTeam: Codable {
private var teams: [JsonTeam]
init(teams: [JsonTeam]) {
self.teams = teams
}
func getTeams()-> [JsonTeam]{
return(self.teams);
}
func setTeams(teams:[JsonTeam]){
self.teams = teams;
}
}
class JsonTeam: Codable {
private let id: Int
private var name: String
private var member: Int
init(id: Int, name: String, member: Int) {
self.id = id
self.name = name
self.member = member
}
func getId()->Int{
return(self.id);
}
func setId(id:Int){
self.member = id;
}
func getName()->String{
return(self.name);
}
func setName(name:String){
self.name = name;
}
func getMembers()->Int{
return(self.member);
}
func setMembers(members:Int){
self.member = members;
}
}
问题是:我怎样才能提出请求并在课堂上保存日期?
(我正在使用 Swift 4)
解决方案
对不起,但这是可怕的客观 c代码。
你显然想要你的类中的常量所以声明常量,并且在几乎所有情况下你根本不需要类
struct Response: Decodable {
let teams: [Team]
private enum CodingKeys : String, CodingKey { case teams = "image_team" }
}
struct Team: Decodable {
let id: Int
let imagePath: URL
let teamID: Int
private enum CodingKeys : String, CodingKey { case id, imagePath = "img_path", teamID = "id_team" }
}
就是这样。没有其他的。没有奇怪的公共吸气剂和私人二传手。处理(De)codable
. 如果你想使用更快捷的键,你可以完全省略CodingKeys
声明。密钥imagePath
甚至可以解码为URL
.
最后:没有尾随分号!
读取数据使用传统的URLSession
let url = URL(string: "http://127.0.0.1/MyWebService/api/fetch_image.php")!
let dataTask = URLSession.shared.dataTask(with: url) { data, response, error in
if let error = error {
print(error)
return
}
do {
let result = try JSONDecoder().decode(Response.self, from: data!)
print(result)
} catch {
print(error)
}
}
dataTask.resume()
例如,要添加参数,您必须将 a 附加query
到 URL
http://127.0.0.1/MyWebService/api/fetch_image.php?id_team=2
但这取决于您的后端。
推荐阅读
- node.js - 部署到 heroku 时,我的 node.js/express api 未通过 sendgrid 发送电子邮件
- java - 用 Java 下载时 APK 损坏,但浏览器下载工作正常
- amazon-web-services - 使用 Glue 导出 DynamoDB 表时如何查看进度
- json - 从 The Rundown API 请求 JSON 时找不到 404 页面
- r - 如何在R中迭代作为子集的列表
- r - 获取 cor.test 的输出作为数据框
- javascript - 如何评估 Javascript 子字符串的值
- android - OpenCV 无法为 ARM64 目标 (Android) 构建
- python - 解析 JSX 文件以提取 Import 语句的属性
- python - 传递格式如 Json 的 Txt 文件