我想知道如何使用另一个函数中的变量? (我似乎无法理解这方面的文档,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)
}
任何想法/帮助将不胜感激,
我想我必须声明一个实例/全局变量但是由于某些原因它永远不会起作用?也许我的做法与众不同。
答案 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" //
希望这可以帮助其他人解决这个问题 - 我所做的就是我宣布了一个全局变量,现在在我的情况下我的应用程序需要这个,但是通常更好的编码实践不仅在需要时使用全局变量,请尝试在尝试全局变量之前封装在结构或其他方法中。感谢所有回答