Swift 如何在一个函数中使用另一个函数中的变量?
我想知道如何在另一个函数中使用一个函数中的变量?(我似乎无法理解关于这个的文档,结构似乎不适合我) 基本上,我有一个函数,它删除一些字符,然后返回一个引号/句子,其中包含经过编辑的字符(/n)&(/),但是我想将该函数返回的值放入我的tweet sheet/share函数中。但我似乎无法让它发挥作用: 这是我的删除字符功能:Swift 如何在一个函数中使用另一个函数中的变量?,swift,Swift,我想知道如何在另一个函数中使用一个函数中的变量?(我似乎无法理解关于这个的文档,结构似乎不适合我) 基本上,我有一个函数,它删除一些字符,然后返回一个引号/句子,其中包含经过编辑的字符(/n)&(/),但是我想将该函数返回的值放入我的tweet sheet/share函数中。但我似乎无法让它发挥作用: 这是我的删除字符功能: var cachedQuote: String = interestingQuoteLabel.text! func removeSomeChars(a: Stri
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)
}
如有任何想法/帮助,将不胜感激
我想我必须声明一个实例/全局变量,但由于某种原因,它永远不起作用?也许我做的不一样 您必须使用函数的返回值并将
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
,然后通过将字符串拆分为多个字符串并将它们连接在一起来删除它们。这样,如果你想简单的话,你可以添加另一个字符。我通过在类的开头声明变量来解决这个问题
所以看起来有点像这样:
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" //
希望这能帮助其他人解决这个问题-我所做的是声明了一个全局变量,现在我的应用程序需要这样做,但是更好的编码实践是,在尝试全局变量之前,不仅在需要的地方使用全局变量,还尝试用结构或其他方法封装。感谢所有的回答您的
removeSomeChars
功能在哪里?它是独立的,还是在对象中?其中是sharedQuote
。它是在全局命名空间中还是在实例变量中?感谢您的帮助,但我得到了相同的错误“只能声明实例方法@iAction”)有什么想法吗?您是否已将UIButton与iAction连接?我想我有-@iAction func shareButton(发件人:UIButton){
基本上,我需要将我在第一个@IBAction
中创建的变量(即realString
)调用到第二个@IBAction中以共享它,我仍然没有弄明白这一点-有什么想法吗?除此之外,我还尝试将其封装在一个结构中-但没有用,!。