Я пытаюсь решить проблему, в которой я застрял.
Моя база данных проекта назначает один parentId каждому родителю, у которого может быть несколько childId для своих детей.
После входа в систему приложение iOS должно отобразить все childId, связанные с parentId.
.
Моя база данных:
ParentID ChildID Name Class
10 45 Andrew 4
10 46 Sarah 8
11 47 Mark 2
12 48 Claire 4
Мне удалось создать строку JSON для этой информации, если parentId вставлен в форму PHP, для parentId = 10:
[{"childId":45,"name":"Andrew","class":"4"},{"childId":46,"name":"Sarah","class":"8"}]}
Однако я не умею анализировать эти данные в нашем приложении для iOS, чтобы родитель мог видеть идентификаторы своих детей.
Мой Swift Code пока явно не помогает! (Я использую Alamofire для своей сети iOS)
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!)
}
}
}
}





Это действительно просто с протоколом Codable (см. Дополнительную информацию здесь и здесь). Во-первых, вам нужно создать структуру, представляющую вашу модель:
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
}
}
}
Используйте
Codable