【问题标题】:access var in another function在另一个函数中访问 var
【发布时间】:2015-12-02 03:07:15
【问题描述】:

我在尝试访问在其他函数中声明的变量时遇到问题。

这是我的代码:

@IBAction func Addbutton(sender: UIButton) {

        myImageUploadRequest()

    var titlestring: NSString = titre.text as NSString //Var i want to access
    var description:NSString = desc.text as NSString
    var price : NSString = prix.text as NSString

}

func createBodyWithParameters(parameters: [String: String]?, filePathKey: String?, imageDataKey: NSData, boundary: String) -> NSData {
    var body = NSMutableData();

    if parameters != nil {
        for (key, value) in parameters! {
            body.appendString("--\(boundary)\r\n")
            body.appendString("Content-Disposition: form-data; name=\"\(key)\"\r\n\r\n")
            body.appendString("\(value)\r\n")
        }
    }

    //here i want to access to the titlestring var declared in my addButton func
    println(titlestring)

    let filename = titlestring
}

我尝试返回 var 但没有成功。

【问题讨论】:

  • 当您退出函数时,函数中声明的所有变量都将被“销毁”。所以标题字符串在 Addbutton() 之外不存在。你需要在函数之外声明titlestring,或者从Addbutton返回它
  • 您不能访问在其他方法中声明的局部变量。这根本不可能。也许如果你描述你在高层次上解决的实际问题(即创建一个按钮来执行 XYZ 并生成 PQR 的描述,其中必须包含按钮中的一些数据)有人可以提出更好的方法。

标签: ios swift function var


【解决方案1】:

首先在函数之外但在你的类中创建一个变量。 (一个全局变量)

var titleString:NSString?

我们将把它设为可选字符串,因为它没有任何初始值。

在你的函数中,你可以写入这个字符串。

titleString = title.text as NSString //Var i want to access

然后您可以检查您的字符串是否有值(因为它是可选字符串)

if let title = titleString{
    println(title)
}

额外信息。 你为什么要使用 NSString 来代替 swift 原生字符串?
阅读this answer 了解为什么原生类型更好。

通常的做法是对变量使用驼峰式。
titleStringtitlestring 不同,这样更容易阅读

【讨论】:

  • 我已经尝试过这种方式,但它返回“nil”,但是如果我在“AddButton”的末尾放置一个控件,我会得到值。
【解决方案2】:

在您班级顶部的 IBAction 之外声明这一点

var titlestring : NSString = ""

// 然后你的代码的其余部分现在你可以访问字符串变量了

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-07-22
    • 1970-01-01
    • 2022-12-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-08-04
    • 1970-01-01
    相关资源
    最近更新 更多