我正在尝试解决我遇到的问题。
我的项目数据库会为每个父母分配一个parentId
,这些父母可以为子女提供多个childId
。
登录后,iOS App应显示与childId
关联的所有parentId
我的数据库:
ParentID ChildID Name Class
10 45 Andrew 4
10 46 Sarah 8
11 47 Mark 2
12 48 Claire 4
如果将parentId
插入到PHP表单中,我已设法为此信息创建一个JSON字符串,对于parentId = 10:
[{"childId":45,"name":"Andrew","class":"4"},{"childId":46,"name":"Sarah","class":"8"}]}
但是我不擅长将这些数据解析到我们的iOS应用程序中,以便父母可以看到他们的孩子ID
我的Swift Code到目前为止,显然它没有帮助! (我在我的iOS网络中使用Alamofire)
let URL_CHILD_DEVICE = "http://localhost/test/dashDevice.php"
//the defaultvalues to store data
let defaultValues = UserDefaults.standard
override func viewDidLoad() {
super.viewDidLoad()
if let name = defaultValues.string(forKey: "parentId") {
labelParentId.text = pname
}
Alamofire.request(URL_CHILD_DEVICE, method: .get).responseJSON {
response in
if response.data != nil {
let json = JSON(data: response.data!)
let name = json["name"][0]["class"].string
if name != nil {
print(name!)
}
}
}
}
答案 0 :(得分:0)
使用Codable
协议非常简单(请参阅更多信息here和here)。首先,您需要创建一个表示模型的结构:
struct Person: Codable {
let parentId: Int // Or String. Not sure from your data.
let childId: Int
let name: String
let `class`: Int // This could be an enum.
}
符合Codable
将允许编译器生成解析JSON所需的编码/解码方法。剩下的就是尝试在网络响应中解析它。
Alamofire.request(URL_CHILD_DEVICE, method: .get).responseJSON { response in
if let data = response.data {
do {
let person = try JSONDecoder().decode(Person.self, from: data)
print(person.name)
} catch {
// handle errors
}
}
}