接收用户登录时存储的用户默认值(swift3 ...)

时间:2017-08-18 13:14:53

标签: ios swift

1)记录后,我从数据库中检索值(OK)

override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view.

        // Receive user defaults which we stored when user logged in

    let defaults = UserDefaults.standard
    let firstname = defaults.string(forKey: "usernameValue")
    let lastname = defaults.string(forKey: "nameValue")
    let connect_email = defaults.string(forKey: "emailValue")
    let event_mois = defaults.array(forKey: "event_mois")
    }

2)viewDidLoad()之后我制作一个数组来提供显示(OK)

var sections = [
    Section(genre: " Event du mois",
            movies: ["The Incredibles", "The Incredibles"],
            expanded: false),
    Section(genre: " Top Event",
            movies: ["Guardians of the Galaxy", "The Flash", "The Avengers", "The Dark Knight"],
            expanded: false),
    Section(genre: " Event Fribourg",
            movies: ["The Walking Dead", "Insidious", "Conjuring"],
            expanded: false)
]

3)我现在想要从我的数据库中检索的event_mois表将它放在var部分中。但是我不能在viewDidLoad之外使用这个数组,我也不能把var部分放在viewDidload中。

有人能帮助我吗? 谢谢

2 个答案:

答案 0 :(得分:1)

您不能在其他方法中使用该数组,因为它将超出范围。 解决方案:将数组定义为属性,这样你就可以在类的任何地方使用它,属性在所有方法之外的类中进行。

class YourClass {

    var sections : [Section] = []

    override func viewDidLoad() {
        super.viewDidLoad()
       // your code
    }
}

答案 1 :(得分:0)

您只需要将sections定义为您班级的实例属性,然后就可以在班级的任何地方访问它。

class MyViewController: UIViewController {
    var sections: [Section]?

    override func viewDidLoad() {
        super.viewDidLoad()
        // Receive user defaults which we stored when user logged in

        let defaults = UserDefaults.standard
        let firstname = defaults.string(forKey: "usernameValue")
        let lastname = defaults.string(forKey: "nameValue")
        let connectEmail = defaults.string(forKey: "emailValue")
        guard let eventMois = defaults.array(forKey: "event_mois") as? [Section] else {return}

        if let sections = sections {
            sections.append(eventMois)
        } else {
            sections = eventMois
        }
    }

}

并使用Swift命名约定,它是变量名称的较低值。