Если я правильно понял. Просто сделайте следующее.
Например: - у вас есть Entity
с именем OrderInfo и внутри него у вас есть четыре Attributes
customerName, address, orderID и city .
Итак, вы просто используете массив ur с именем для перечисления вещей в tableView
. Тогда логика проста, например, используя didSelectRowAt
, вы можете получить выбранное имя. Передайте это имя следующему VC, как.
Я буду использовать storyBoardID
, чтобы сделать это [Вы также можете использовать свой способ, чтобы передать это].
Первый ВК:
let objNextVC = self.storyboard?.instantiateViewController(withIdentifier: "NextVC") as! NextVC
objNextVC.strName = your_selected_NameHere
self.navigationController?.pushViewController(objNextVC, animated: true)
NextVC:
var strName:String = String()
Теперь здесь начинается логика, я предполагаю, что вы также сохранили то же имя в CoreData [имена, которые есть в массиве имен]. Если нет, я бы посоветовал вам сделать это, чтобы уменьшить дополнительные усилия с вашей стороны.
Теперь в NextVC просто получите строку имени из strName
, объявленного сверху
и примените следующий код для получения данных.
CoreData Match и запрос выборки:
func update(){
let context = (UIApplication.shared.delegate as! AppDelegate).persistentContainer.viewContext
let request = NSFetchRequest<NSFetchRequestResult>(entityName: "OrderInfo")
do{
let results = try context.fetch(request)
if results.count > 0{
for result in results as! [NSManagedObject]{
if let name = result.value(forKey: "customerName") as? String{
if name == strName{
print(result)
let name = result.value(forKey: "customerName")
let address = result.value(forKey: "address")
let orderID = result.value(forKey: "orderID")
let city = result.value(forKey: "city")
//Use it the way you like
do{
try context.save()
self.navigationController?.popViewController(animated: true)
}
catch{
}
}
}
}
}
}
catch{
}
}
А если все в порядке и если данные есть. Вы получите желаемый результат.
Ура!