Передача значение переменной между View Controller

swift4
ios

#1

Нужно передать значение переменной kodServisnika .
Ниже переход с ViewC на ViewC…M.
Как передать значение, и использовать это значение во втором контроллере?

if let kodServisnika = dict[0]["idAcc"] as Any? {
                            // (dict[0]["idAcc"] as Any?) != nil {
                            print(kodServisnika)
                            
                            // Переход на меню
                            DispatchQueue.main.async {



if let storyboard = self.storyboard {
                                    let vc = storyboard.instantiateViewController(withIdentifier: "ViewControllerM")
                                    if vc is ViewControllerM {
                                        self.navigationController?.pushViewController(vc, animated: true)

#2
if vc is ViewControllerM {
    vc.kodServisnika = kodServisnika
    self.navigationController?.pushViewController(vc, animated: true)
}

#3

Ошибка
Value of type ‘UIViewController’ has no member ‘kodServisnika’
vc.kodServisnika = kodServisnika


#4

Я скоро вас тролить буду за такие вопросы либо вообще перестану овтечать на ваши темы.
У вас русским языком написана ошибка.


#5

Написано, что в UIViewController нет такого члена “kodServisnika” или другими словами свойства.


#6

Как это исправить? Подскажите пожалуйста


#7

Создать в ViewControllerM переменную kodServisnika, а точнее в классе ViewControllerM свойство kodServisnika.


#8

Я создавал, и ни чего(


#9

У вас в контроллере, куда осуществляется переход (ViewControllerM) должно быть что-то вроде:

class ViewControllerM: UIViewController {
    var kodServisnika: String!
    ...
    
}

либо любая другая переменная (свойство класса), которую вы указываете в переходе, например:
vc.kodServisnikaNew = kodServisnika - вы же в этой строке значение kodServisnika присваиваете переменной (свойству) в другом классе vc.kodServisnikaNew например


#10
if dict[0]["Address"] != nil  {
                  
                   for index in 0..<dict.count {

                    print(index+1,dict[index]["Address"]!)
                       }
                     
                        //---------------- Переход на меню---------------------
                      //  DispatchQueue.main.async {
                            if let storyboard = self.storyboard {
                                let vc = storyboard.instantiateViewController(withIdentifier: "ViewControllerM")
                                if vc is ViewControllerM {
                                                                    self.navigationController?.pushViewController(vc, animated: true)
                             <-  это в первом vc

это во втором ->

import UIKit

class ViewControllerM: UIViewController, UITableViewDelegate, UITableViewDataSource {
    
   
    @IBOutlet weak var tableZayv: UITableView!
   
 var kodServisnika: String!
    
    func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
        let zayv = tableView.dequeueReusableCell(withIdentifier: "Zayv", for: indexPath)
        zayv.backgroundColor = .clear
        zayv.textLabel?.text = "Это номер ячейки\(indexPath)"
        zayv.textLabel?.textColor = .white
        return zayv
    }

Посмотрите пожалуйста, это какой то замкнутый круг


#11

Вы из перевого ничего не передаёте во второй. Прочитайте советы выше по передачи данных в другой vc


#13


#14

у меня к Вам вопрос, есть проверка на то что приходит с сервера

 if dict[0]["Address"] != nil {
                    for index in 0..<dict.count {
                        
                        print(index+1,dict[index]["Address"]!)
                    }  else { итд...

Дак вот у меня может быть такое что придет null, соответственно у меня цикл не сработает, можно ли как нибудь сделать так, если придет значение null то мы меняем его на “Не указан”


#15

Вы сами ответили на свой вопрос


#16

Получается так что если значение null, то вот эта строка не выполняется

if var dict = (try? JSONSerialization.jsonObject(with: data!)) as? [[String: String]] {


#17

as? [[String: String?]] - так попробуйте


#18

Не выполняется, дач то за беда то

    URLSession.shared.dataTask(with: request) { data, _, error in
       
  if var dict = (try? JSONSerialization.jsonObject(with: data!)) as? [[String: String?]]  {

#19

какой json приходит?


#20

Все сделал, все заработало, спасибо!