2015-09-06 167 views
-1

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

这是我的代码:

@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 
} 

我试图返回的变种,但我没有成功。

+0

当您退出函数时,在函数中声明的所有变量都被“销毁”。所以titlestring在Addbutton()之外不存在。您需要在函数之外声明titlestring,或从Addbutton中返回 – Arno

+0

您无法访问在其他方法中声明的局部变量。这根本不可能。也许如果你描述了你在高层解决的实际问题(例如创建一个按钮来执行XYZ并产生PQR的描述,该描述必须包含来自按钮的一些数据),有人可能会提出更好的方法。 – dasblinkenlight

回答

0

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

var titleString:NSString? 

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

你的函数里面可以写入这个字符串。

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

就可以检查,看看你的字符串有一个值(因为它是一个可选的字符串)

if let title = titleString{ 
    println(title) 
} 

额外信息。 为什么你应该使用NSString作为快速原生字符串?
阅读this answer了解为什么本地类型更好。

对您的变量使用camelcasing是常见的做法。
titleString而不是titlestring这会使读起来更容易

+0

我已经试过这种方式,但它返回“无”,但是如果我把一个控制在“AddButton”的末尾,我得到的价值。 – f1rstsurf

相关问题