Я создал одну функцию под названием «GetDataFromURL», которая является основной задачей для получения URL-адреса формы данных и сохранения в локальном объекте Class Array. используя функцию URlSession.shared.dataTask, я получаю данные в формате DATA, а после этого, используя метод jsonserialization.jsonObject, попадаю в формат json. Ответ представлен в формате словаря, поэтому сохраните его во временном объекте класса, в конце он добавится к объекту массива глобального класса. эта функция вызывается, а Page вызывается методом «View Load». Внутри функции будут отображаться все данные, но каждый раз, когда я получаю нулевой объект массива, пока я отображаю за пределами блока.
public class Modelclass : NSObject {
var id :Int!
var albumId : Int!
var title : String!
var url : String!
var thumbnailUrl : string!
}
это файл класса, а ниже - файл viewcontroller:
var temp:[ModelClass]?
override func viewDidLoad() {
super.viewDidLoad()
self.temp = [ModelClass]()
dispatchQueue.main.async{
self.GetDataFromURL()
}
print(self.temp,"Tesing print")
}
func GetDatafromURL() {
if let url = URL(string :
"https://jsonplaceholder.typicode.com/photos"){
URLSession.shared.dataTask(with: url){(data,response,error) in
if error != nil {
print(error)
return
}
do{
let jsonresponse = try jsonserialization.jsonObject(with:data! ,
options: .mutablecontainers)
for dictionary in jsonresponse as! [[String:AnyObject]]
{
var test = ModelClass()
test.title = dictionary["title"] as? String
test.albumId = dictionary["albumId"] as? Int
test.id = dictionary["id"] as? Int
test.thumbnailUrl = dictionary["thumbnailUrl"] as? String
test.url = dictionary["url"] as? String
self.temp?.append(test)
}
}
catch let jsonerror{
print(jsonerror)
}
}.resume()
}
}
это покажет мне «опционально ([]) Testing print» как Output.and при печати этого временного объекта внутриБлок do будет отображать все данные.