【问题标题】:get information from struct in swift file从 swift 文件中的结构获取信息
【发布时间】:2017-11-15 02:35:46
【问题描述】:

所以我有一个类 swift 文件,它有一个像这样的 UserAccount 类

class UserAccount{

 var userName: String!
 var email: String!
 var instaGram: String!
 var timeCreated: String!
 var like: String!
 var role: String!
 var active: String!
 var id: String!


init(userName: String, email: String, instaGram: String, timeCreated: String, like: String, role: String, active: String, id: String){

    self.userName = userName
    self.email = email
    self.instaGram  = instaGram
    self.timeCreated = timeCreated
    self.like = like
    self.role = role
    self.active = active
    self.id = id

 }

}

我有登录视图控制器,我在其中获取类变量并执行我的 json 并像这样分配它们的值:

var userAcount = [UserAccount]() // Array Of Object
var user = UserAccount(userName: "", email: "", instaGram: "", timeCreated: "", like: "", role: "", active: "", id: "") //Init of Object

这是我获取我的 Json 并将其值添加到其相应的用户类变量的地方,我在我的登录视图控制器上执行此操作:

self.user.userName = userData.value(forKey: "userName") as! String
self.user.email = userData.value(forKey: "email") as! String
self.user.instaGram = userData.value(forKey: "instaGram") as! String
self.user.timeCreated = userData.value(forKey: "timeCreated") as! String
self.user.role = userData.value(forKey: "role") as! String
self.user.like = userData.value(forKey: "likes") as! String
self.user.id = userData.value(forKey: "id") as! String
self.user.active = userData.value(forKey: "active") as! String

这是我将信息附加到我的类数组的地方:

self.userAcount.append(self.user)

现在我的问题是我不知道如何在其他视图控制器上显示 UserAccount 类中的信息,例如用户配置文件视图控制器,这是我第一次使用用户和配置文件,任何帮助将不胜感激,谢谢你

【问题讨论】:

  • 为什么你的所有属性都被声明为隐式展开的选项?您应该删除所有这些 !,因为您在 init 方法中为每个人提供了一个非可选值。
  • 错过了,谢谢@rmaddy
  • 提供更多关于你想要做什么的信息:“只显示数据”、“发送数据给其他 VC”、“在 TableView 中显示数据”等
  • @YerkebulanAbildin 向另一个 VC 发送数据

标签: arrays json swift class


【解决方案1】:

向另一个UIViewController提供数据

  1. 使用Storyboardsegue

    override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
       if segue.identifier == "your_identifier", 
          let destinationVC = segue.destination as? YourViewController {
            destinationVC.userAcount = self.userAcount
        }
    }
    
  2. 以编程方式

    func gotoNextVC() {
        let destinationVC = YourViewController(nibName: "YourViewController", bundle: nil)
        destinationVC.userAcount = self.userAcount
        self.navigationController?.pushViewController(destinationVC, animated: true)
    
        // OR
        self.present(destinationVC, animated: true, completion: nil)
    }
    

【讨论】:

    【解决方案2】:

    在另一个 ViewController 中创建您的 UserAccount 的实例。 当你唤醒新的视图控制器时,传递 UserAccount 的值,传递值你有两个选择 1。故事板/转场

    func prepare(for segue: UIStoryboardSegue, sender: Any?){
          if segue.identifier == "identifier"{ 
            let destinationVC = segue.destination as? YourViewController
            destinationVC.userAcount = self.userAcount
          }
       }
    

    2。按代码

    let storyBoard = UIStoryboard(name: "Main", bundle: Bundle.main)
       let controller = storyBoard.instantiateViewController(withIdentifier:      identifier)
       controller.user = self.user
    

    现在要在您的 NewViewController 中访问,您只需通过

    访问
    let userName = self.user.userName
    

    【讨论】:

    • 这部分工作,但如果用户离开视图并返回它,变​​量将失去其价值,换句话说,当用户第一次登录并转到他的个人资料时,它会显示他的电子邮件,但如果他转到另一个视图并返回到他的个人资料视图,则电子邮件为 nil @singh.jitendra
    • 如果此信息不存在安全问题,您可以尝试 NSUserDefault [link]stackoverflow.com/questions/31203241/…) 这很容易使用,但数据非常私密它像 coreData 或在 Sqlite @scs 中的本地位置
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-05-16
    相关资源
    最近更新 更多