如何在另一个函数中使用一个函数的变量?

时间:2015-03-08 11:57:52

标签: swift

我想知道如何使用另一个函数中的变量? (我似乎无法理解这方面的文档,Structs似乎对我不起作用)

基本上我有一个删除一些字符的函数,然后返回带有字符编辑(/ n)&(/)的引用/句子但是我想将该函数返回的值放入我的推文表/共享函数中。但我似乎无法让它发挥作用:

这是我的删除字符功能:

var cachedQuote: String = interestingQuoteLabel.text!
    func removeSomeChars(a: String) -> String {
        var cachedQuote: String = ""
        for character in a {
            if character != "\"" && character != "\n" {
                cachedQuote += String(character)
            }
        }
        return cachedQuote
    }

然后我尝试将其插入到共享函数中但它不起作用:

 @IBAction func shareButton(sender: UIButton) {

        var myShare = "Hi + \(sharedQuote) "
        let activityVC:UIActivityViewController =     UIActivityViewController(activityItems: [myShare], applicationActivities: nil)
        self.presentViewController(activityVC, animated: true, completion: nil)

    }

任何想法/帮助将不胜感激,

我想我必须声明一个实例/全局变量但是由于某些原因它永远不会起作用?也许我的做法与众不同。

2 个答案:

答案 0 :(得分:1)

您必须使用函数的返回值并将cachedQuote传递给它:

func removeSomeChars(yourString:String) -> String {
    //Create set of characters you dont want.
    var charSet = NSCharacterSet(charactersInString: "\"\n")
    //Separate your string to remove them
    var cleanStringAsArray = yourString.componentsSeparatedByCharactersInSet(charSet)
    //put the strings together
    var realString = join("", cleanStringAsArray)
    return realString
}

@IBAction func shareButton(sender: UIButton) {
    //Call the removeSomeChars method and put the value inside the cleanQuote variable
    var cleanQuote = removeSomeChars(cachedQuote)
    var myShare = "Hi + \(cleanQuote) "
    let activityVC:UIActivityViewController =     UIActivityViewController(activityItems: [myShare], applicationActivities: nil)
    self.presentViewController(activityVC, animated: true, completion: nil)

}

如您所见,我已编辑了您的removeSomeChars方法。因为你有点复杂。你可以在字符串中设置一个你不想要的NSCharset个字符,并通过将字符串拆分成多个字符串并将它们连接在一起来删除它们。这样,如果你真的很容易,你可以添加另一个字符。

答案 1 :(得分:1)

我通过在类的开头声明变量

来解决这个问题

所以看起来有点像这样:

class ViewController: UIViewController {


    var myVar : String = ""

 @IBAction func showInterestingVar() {
         myVar = varButtonLabel.text! }

@IBAction func printVar() {
        println( myVar )  }

 }

// Note - Be sure not to redefine the Variable on the second instance, i.e) reference it like myVar = "2" instead of var myVar = "2" // 

希望这可以帮助其他人解决这个问题 - 我所做的就是我宣布了一个全局变量,现在在我的情况下我的应用程序需要这个,但是通常更好的编码实践不仅在需要时使用全局变量,请尝试在尝试全局变量之前封装在结构或其他方法中。感谢所有回答