У меня есть следующая проблема, которую я не мог решить, возможно, потому что я недостаточно хорошо понимаю urlsessions. Итак, у меня есть база данных mysql и скрипт php, который может получить определенные значения базы данных. Я определил свой собственный простой класс, который имеет определенные атрибуты из таблицы в mysql, и я определил метод в этом пользовательском классе, который извлекает эти данные и присваивает эти извлеченные значения объекту. Мой код, который делает это, выглядит следующим образом (вероятно, много недостатков в моем коде ...), который я пробовал в файле игровой площадки в XCode, класс называется foodClass (так как база данных о еде):
import UIKit
class foodClass {
var description : String?
var price : Float?
func downloadDish(){
let requestURL = NSURL(string: "http://localhost/downloadDishes.php")
let request = NSMutableURLRequest(url: requestURL! as URL)
request.httpMethod = "POST"
//example id, which tells php which food to pick
let postString = "id=\(12)"
let utf8PostString = postString.data(using: .utf8)
let task = URLSession.shared.uploadTask(with: request as URLRequest, from: utf8PostString){
data, response, error in
if error != nil {
DispatchQueue.main.async {
print("no connection maybe?")
}
}
else {
if data != nil {
do {
let dishJSON = try JSONSerialization.jsonObject(with: data!) as! NSDictionary
let disharray = dishJSON["dishes"] as! NSArray
//print to make sure that we get a response
print(disharray[0])
let tempdish = disharray[0] as! NSArray
self.description = tempdish[2] as! String
self.price = (tempdish[3] as? NSNumber)?.floatValue ?? 4.99
} catch {
print(error)
}
}
}
}
task.resume()
}
}
//test it out
var dish = foodClass()
dish.downloadDish()
print(dish.description)
Таким образом, оператор print "print (disharray [0])" точно показывает, что находится в базе данных, поэтому при извлечении данных из базы данных ничего не происходит неправильно. Но почему-то описание атрибутов и цена не инициализируются после вызова функции downloadDish (). Может быть, я не понимаю что-то важное о классах и URLsessions.