【问题标题】:Swift: access Variables from other classes in different swift filesSwift:从不同的 swift 文件中的其他类访问变量
【发布时间】:2015-08-08 16:52:30
【问题描述】:

我已尝试实施来自this answer 的解决方案,但我无法让它发挥作用。对于我尝试访问的变量,我得到“使用未解析的标识符...”。

我有一个 loginViewController.swift 可以在有人登录时获取用户名和密码..

import UIKit

类 loginViewController: UIViewController {

@IBOutlet weak var userEmailTextField: UITextField!
@IBOutlet weak var userPasswordTextField: UITextField!


override func viewDidLoad() {
    super.viewDidLoad()

    // Do any additional setup after loading the view.
}

override func didReceiveMemoryWarning() {
    super.didReceiveMemoryWarning()
    // Dispose of any resources that can be recreated.
}

@IBAction func loginButtonTapped(sender: AnyObject) {

    let userEmail = userEmailTextField.text;
    let userPassword = userPasswordTextField.text;

然后我有一个 PostService.swift 文件,它从 MySQL 数据库中获取数据。它应该使用登录人的用户名来访问相关数据。

import Foundation

类 PostService {

var settings:Settings!

let userEmail = "steve@centrix.co.za"; //This is hard coded but needs to come from the loginViewController
let userPassword = "1234";             //This is hard coded but needs to come from the loginViewController

我已经尝试过这个和其他一些建议,但我似乎无法让它工作..请帮助..

提前致谢。

【问题讨论】:

  • 您能分享一下您正在使用的实际代码吗?你如何实例化 PostService 类?您需要全局声明变量,并且可以使用 self 关键字来访问它们。

标签: swift class variables


【解决方案1】:

你可以声明

var userEmail = "";
var userPassword = "";

类之外(哪个 Swift 类无关紧要)。然后,删除let

@IBAction func loginButtonTapped(sender: AnyObject) {
    userEmail = userEmailTextField.text;
    userPassword = userPasswordTextField.text;

将存储变量,您将能够在PostService 类中使用。

但是,LoginViewController 和 PostService 之间真的没有联系吗?您必须在某处调用 PostService 函数...也许您可以在那里传递变量?

【讨论】:

  • 感谢格洛芬德尔。我为此挣扎了几天......变量保持空白。然后我意识到我需要单击登录按钮将值传递给变量...重置我的 iOS 模拟器,登录并 bam!
猜你喜欢
  • 2014-08-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-09-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多