Класс инициализации Swift с параметрами, затем инициализируйте его без параметров - PullRequest
0 голосов
/ 25 июня 2018

У меня есть функция, которая инициализирует класс из json и отправляет значения с отправкой параметров из текстовых полей контроллера представления. И я должен показать значения этого класса в другом контроллере представления без отправки параметров. Это мой код

Alamofire.request(url!, method: .post, parameters: params, encoding: JSONEncoding.default, headers: nil).responseJSON(completionHandler: { response in
    if response.data != nil {
        switch response.result
        {
        case .failure(let error):
            print(error)
        case .success(let value):
            let json = JSON(value)
            guard let dataarr = json["my_profile"].arrayObject as? [String] else {return}
            if dataarr.count > 0 {
                teacherinfo.name = dataarr[0]
                teacherinfo.surname = dataarr[1]
                teacherinfo.email = dataarr[2]
                teacherinfo.phone = dataarr[3]
                completion(teacherinfo,true)
            }
            else
            {
                completion(teacherinfo,false)
            }
        }
    }
})

Это мой класс

class TeacherInfo {
    var name : String = ""
    var surname : String = ""
    var email : String = ""
    var phone : String = ""
}

Здесь я его инициализирую

func search2() {
    TeacherSearcher.SearchTeachers(name: about.nametextfield.text!, surname: about.surnametextfiel.text!) { (teacherinfo,success) in
        if success! {
            self.navigationController?.pushViewController(TeacherViewController(), animated: true)
        }
        else {
            print("not")
        }
    }
}

Я должен вернуть значения класса без инициализации params

Ответы [ 2 ]

0 голосов
/ 25 июня 2018
struct TeacherInfo {
static var name : String!
static var surname : String!
static var email : String!
static var phone : String!

init(name:String, surname:String, email:String, phone:String) {
    self.name = name
    self.surname = surname
    self.email = email
    self.phone = phone
    }
}

-

if dataarr.count > 0 {
            let element = TeacherInfo(name:dataarr[0], surname:dataarr[1], email:dataarr[2], phone:dataarr[3])
            completion(teacherinfo,true)
        }
0 голосов
/ 25 июня 2018

Создание структуры

struct TeacherInfo {
    static var name : String = ""
    static var surname : String = ""
    static var email : String = ""
    static var phone : String = ""
}

Передача данных

/// Save Data in Struct
/// Now this struct is Accessible in all your controllers
/// Without passing any Object in it
TeacherInfo.email = "Teacher Email"
TeacherInfo.name = "iOS"
TeacherInfo.surname = "Geek"
TeacherInfo.phone = "123456789"

/// Destination VC
print(TeacherInfo.email)
print(TeacherInfo.name)
print(TeacherInfo.surname)
print(TeacherInfo.phone)

Примечание Таким образом, вы можете пройтиданные из одного VC в другой VC без инициализации класса

...