В моем контроллере 1 у меня есть таблица. В зависимости от выбора ячейки индексный путь переходит к контроллеру 2, который также является таблицей. С этим segued indexpath у меня есть функция CloudKit, которая загружает соответствующий массив из этого указательного пути, например ...Как работать с nil (при развертывании необязательного значения) во время посещения предыдущего контроллера
var newindex: IndexPath!
var restaurantArray: Array<CKRecord> = []
override func viewDidLoad() {
super.viewDidLoad()
func downloadRestaurants()
{
let publicDB = CKContainer.default().publicCloudDatabase
let predicate = NSPredicate(value: true)
var query:CKQuery
switch newindex.row
{
case 0 :
query = CKQuery(recordType: "american", predicate: predicate)
self.typelabel.text = "American & European"
case 1 :
query = CKQuery(recordType: "asian", predicate: predicate)
self.typelabel.text = "Asian, Oriental, Indian & Mediterranean"
case 2 :
query = CKQuery(recordType: "pubs", predicate: predicate)
self.typelabel.text = "Burgers & Brew"
default :
query = CKQuery(recordType: "steakhouses", predicate: predicate)
self.typelabel.text = "Steakhouses"
}
publicDB.perform(query, inZoneWith: nil)
{
(results, error) -> Void in
if (error != nil)
{
print("Error" + (error?.localizedDescription)!)
}
else
{
for result in results!
{
self.restaurantArray.append(result)
}
OperationQueue.main.addOperation({() -> Void in
self.tableView.reloadData()
})
}
}
}
downloadRestaurants()
}
Однако, когда я selet один из этих экземпляров массива, я привел к одному конкретному экземпляру контроллера 3. Это не проблема, но, когда я иду «Назад», чтобы выбрать другой экземпляр, мой сбоев программы. Что понятно. В настоящее время моя логика настроена на переход от контроллера 1 к 2 к 3, но не от 3 до 2 на основе моей функции indexpath/table. Поэтому как я смогу исправить эту маленькую дилемму?
Я нахожусь на заборе, как я мог бы предупредить контроллер 2, что (исходя из таблицы 3). Мне кажется, что я могу создать другую переменную indexpath для контроллера 2, или я мог бы создать оператор in в контроллере 2, но я не понимаю, как бы я пошел по этому пути. Предложения?