Прежде всего забудьте о пользовательской структуре.Используйте класс NSManagedObject
в качестве массива источника данных.
var iteamsArray = [Details]()
В viewDidLoad
first извлечение данных, если массив пуст, загрузите его из веб-службы
override func viewDidLoad() {
let fetchRequest : NSFetchRequest<Details> = Details.fetchRequest()
do {
iteamsArray = try self.context.fetch(fetchRequest)
if iteamsArray.isEmpty {
downloadJson()
} else {
self.tableView.reloadData()
}
} catch { print(error) }
}
В downloadJson()
заменить
self.iteamsArray.append(JsonData(name: nameJson!, username: usernameJson!))
на
self.iteamsArray.append(coreData)
и удалить эти строки
//fetching from core data
let fetchRequest : NSFetchRequest<Details> = Details.fetchRequest()
let details = try self.context.fetch(fetchRequest)
if details.count > 0 {
for detail in details as [NSManagedObject] {
let nameCore = detail.value(forKey: "name")
let usernameCore = detail.value(forKey: "username")
}
}
В cellForRow
получить значения непосредственноиз NSManagedObject
объектов
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCell(withIdentifier: "JsonCell", for: indexPath) as! JsonTableViewCell
let aData = iteamsArray[indexPath.row]
cell.labelName.text = aData.name
cell.labelUsername.text = aData.userName
cell.selectionStyle = .none
return cell
}