Итак, я извлекаю данные из URL-адреса, который находится в формате json. Я пытаюсь отобразить данные в моем представлении таблицы, но, хотя это кажется простым, я не могу понять, как это сделать.Как заполнить мой tableview с помощью mutablearray от json
class CompanyModel {
func getJSON() {
let companyArray: NSMutableArray = NSMutableArray()
let requestURL: NSURL = NSURL(string: "http://localhost/Companies/JSON.php")!
let urlRequest: NSMutableURLRequest = NSMutableURLRequest(URL: requestURL)
let session = NSURLSession.sharedSession()
let task = session.dataTaskWithRequest(urlRequest) {
(data, response, error) -> Void in
let httpResponse = response as! NSHTTPURLResponse
let statusCode = httpResponse.statusCode
if (statusCode == 200) {
print("Everyone is fine, file downloaded successfully.")
do{
let json = try NSJSONSerialization.JSONObjectWithData(data!, options:.AllowFragments)
if let companies = json["companies"] as? [[String: AnyObject]] {
for company in companies {
if let name = company["name"] as? String,
let phoneNumber = company["phone_number"] as? String,
let website = company["website"] as? String,
let email = company["email"] as? String,
let address = company["address"] as? String
{
let company = CompanyModel()
company.name = name
company.phoneNumber = phoneNumber
company.website = website
company.email = email
company.address = address
}
companyArray.addObject(company)
print(companyArray)
}
}
} catch {
print("Error with Json: \(error)")
}
}
print(companyArray) <- array is populated
}
print(companyArray) <- array is empty
task.resume()
}
}
Я знаю, что я сделал это раньше .... Я предполагаю, что в viewDidLoad()
я бы назвал CompanyModel().getJSON()
, который будет получать данные, а затем сохранить его в пустом массиве, но мой ум чувствует себя пустым, как на сделать это.
Я не могу объявить переменную NSarray и сохранить данные этой переменной непосредственно для меня, чтобы заполнить таблицу. Тем не менее, я надеюсь, что это объясняет, что я пытаюсь добиться.
Именно то, что я был после, но по какой-то причине моего 'вар arraySource = NSMutableArray()' пусто. Если я делаю 'print (companyArray)' внутри той же скобки, что и 'task.resume()', то 'companyArray' пуст. Тем не менее, если я печатаю один кронштейн раньше, он по какой-то причине печатает полный массив. не уверен, почему массив удален – luke
@luke попытается определить ваш массив после func getJSON: 'let companyArray: NSMutableArray = NSMutableArray()' это я думаю, потому что ваш массив определен в этих конкретных скобках, поэтому после выполнения, когда компилятор завершит этот блок , он удаляет весь массив из памяти! – AaoIi
Я на самом деле уже сделал в своем коде - только что отредактировал вопрос (я думаю, это то, что вы имеете в виду). Я также добавил, что оператор печати делает и не работает. – luke