컨트롤러 1에는 테이블이 있습니다. 셀의 선택에 따라, 인덱스 경로는 테이블 인 컨트롤러 2에 이어집니다. 그 세그먼트 인덱스 경로로, 나는이 indexpath에서 적절한 배열을 다운로드하는 CloudKit 함수를 가지고있다. 그래서 ...이전 컨트롤러를 방문하는 동안 nil (옵션 값을 언 래핑하는 동안)을 처리하는 방법
var newindex : IndexPath! 내가 "뒤로"이동 다른 인스턴스를 선택 할 때이 배열 인스턴스 중 하나를 selet 수 때
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()
}
그러나, 나는 컨트롤러 3에서 하나 개의 특정 인스턴스에 가져하고 이것은 문제가 아니라 내 프로그램이 충돌합니다. 어느 것이 이해할 수 있습니다. 현재, 내 논리는 컨트롤러 1에서 2에서 3으로 설정되지만, 내 indexpath/테이블 기능에 따라 3에서 2로 설정되지는 않습니다. 따라서이 작은 딜레마를 어떻게 해결할 수 있습니까?
저는 펜스 2에서 (테이블 3에서 오는) 컨트롤러 2에 경고 할 수있을 것입니다. 나는 컨트롤러 2에 대해 또 다른 indexpath 변수를 만들 수 있거나 컨트롤러 2에서 in 문을 만들 수있는 것처럼 느낀다. 그러나 나는 그 경로에 대해 어떻게 갈 것인지에 대해서는 모호하다. 제안?