2015-03-08 2 views
0

Мне было интересно, как можно использовать переменную от одной функции в другой? (Я просто не могу показаться, что обдумываю эту документацию, а Structs, похоже, не работает для меня)Как использовать переменную от одной функции в другой?

В принципе у меня есть функция, которая удаляет некоторые символы, а затем возвращает предложение/предложение с помощью символы redacted (/ n) & (/) однако я хочу поместить значение, возвращаемое этой функцией в мою функцию твитов/share. Но я просто не могу заставить его работать:

Это моя Недостающая Функция:

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 
    } 

, а затем я пытаюсь вставить это в Share функцию, но она не работает:

@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

Где ваша 'removeSomeChars' функция? Является ли это автономным, или это в объекте? Где «sharedQuote». Является ли он в глобальном пространстве имен или переменной экземпляра? – kellanburket

ответ

0

Я установил это, объявив переменный в начале моего класса

Так это выглядело немного что-то вроде этого:

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" // 

Надеется, что это помогает кто-то с этой проблемой - Над чем я я объявлен глобальной переменной, теперь в моем случае для моего приложения это было необходимо. Однако часто лучше применять правила кодирования, чтобы не только использовать глобальные переменные, где это необходимо, попробуйте инкапсулировать в структурах или других методах, прежде чем пытаться использовать глобальную переменную. Спасибо всем, что ответил

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 символов, которые не нужны внутри строки, и удалить их, разделив строку на несколько строк и объединить их. Таким образом, вы можете просто добавить еще один символ, если хотите очень легко.

+0

Цените помощь, Но я получаю ту же ошибку: «Только методы экземпляра могут быть объявлены @IBAction) Любые идеи? – Jack

+0

Ну, вы подключили UIButton с IBAction? – Christian

+0

Я думаю, что у меня есть '@IBAction func shareButton (отправитель: UIButton) {' – Jack

Смежные вопросы