Swift中如何在不同ViewController读取数组值并赋值给文本框?
解决iOS共享实例赋值给TextField的问题
嘿,作为iOS新手能上手单例模式已经超棒啦!咱们来一步步搞定把用户信息赋值给TextField的问题~
先理清楚你的当前情况
你创建的User.sharedUser是可选类型(User?),所以你创建的userArray其实是[User?]类型——也就是数组里装的是可能为空的用户实例。直接访问的话很容易触发崩溃,所以第一步要做的是安全解包。
方案1:直接使用你的数组赋值
因为你的数组里只有User.sharedUser这一个元素,我们可以先取出数组的第一个元素,再用可选绑定确保它不为空:
// 从数组中取出第一个元素,安全解包 if let currentUser = userArray.first ?? nil { // 把用户属性赋值给对应的TextField nameTextField.text = currentUser.Name emailTextField.text = currentUser.Email passwordTextField.text = currentUser.Password cityTextField.text = currentUser.City stateTextField.text = currentUser.State zipcodeTextField.text = currentUser.Zipcode countryTextField.text = currentUser.Country }
方案2:更简洁的方式(推荐)
其实你完全不需要把单例放进数组里——单例的设计就是全局唯一的实例,直接访问User.sharedUser就好,这样代码更简洁:
// 直接解包共享实例 if let currentUser = User.sharedUser { nameTextField.text = currentUser.Name emailTextField.text = currentUser.Email passwordTextField.text = currentUser.Password cityTextField.text = currentUser.City stateTextField.text = currentUser.State zipcodeTextField.text = currentUser.Zipcode countryTextField.text = currentUser.Country }
额外的小建议(Swift规范)
按照Swift的命名规范,属性名应该用小驼峰命名(首字母小写),比如把Name改成name,Email改成email,这样代码会更符合行业习惯哦!
内容的提问来源于stack exchange,提问作者Huzaifa ameen
相关产品推荐
相关产品推荐

