Как мы можем получить значение второго vC json в firstVC, не переходя к secondVC в быстром - PullRequest
0 голосов
/ 02 октября 2019

мой firstVC json содержит все остальные json-контроллеры вида ... здесь я хочу, прежде чем нажать на другой контроллер вида, мне нужно сравнить его с домашним json-идентификатором здесь, где два идентичных идентификатора, мне нужно нажать thatVC .. так что здесьне обращаясь ни к какому другому контроллеру представления, как мы можем сравнить их идентификаторы в homeVC ... пожалуйста, помогите мне здесь.

Я попробовал два способа:

1) объявить переменную в secondVC и присвоить ей значение secondVC id и вызвать ее в firstVC

в первом коде VC:

let goVC = self.storyboard?.instantiateViewController(withIdentifier: "SecondViewController") as? SecondViewController

var goId: String = goVC.secndId ?? ""
print("the goid is \(goId)")// getting nil
if(goId == allIdArray)
{
    self.navigationController?.pushViewController(goVC, animated: true)
}

во втором коде VC:

var secndId: String?
secndId = jsonObj["sid"] as? String

2) сохранение идентификатора второго идентификатора json с оберткой цепочки для ключей и повторное получение его в первом виртуальном ключе

во первых:

let goVC = self.storyboard?.instantiateViewController(withIdentifier: "SecondViewController") as? SecondViewController

let goId: String = KeychainWrapper.standard.string(forKey: "sid") ?? ""
print("the goid is \(goId)")// getting nil
if(goId == allIdArray)
{
    self.navigationController?.pushViewController(goVC, animated: true)
}

во вторых VC:

var secndId: String?
self.secndId = jsonObj["sid"] as? String
KeychainWrapper.standard.set(self.secndId ?? "", forKey: "sid")

здесь allIdArray содержит идентификаторы allVC, а sid - это secondVC json id

в обоих направленияхя получаю ноль почему ?? Я хочу сравнить идентификатор SecondVC в firstvc, не вдаваясь в secondvc.

, пожалуйста, помогите мне в коде выше.

1 Ответ

0 голосов
/ 02 октября 2019

Весь ваш логический дизайн не велик, но если бы я должен был ответить прямо на ваш вопрос, учитывая, что объяснения тоже не велики, вот вам предложение:

  let vcID = 1

  let viewControllers = [1 : FirstVC.self, 2 : SecondVC.self, 3 : ThirdVC.self]
  for (id, vcType) in viewControllers {
     if id == vcID {
         //assuming that you assign storyboard identifiers exactly matching classes' names, otherwise this guard statement won't succeed
         guard let goToVC = storyboard?.instantiateViewController(withIdentifier: "\(vcType)") else { return }
         //if you need to pass any data before you present this VC, then you will need to safely cast into known VC types
         self.present(goToVC, animated: true, completion: nil)
     }
  }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...