我试图创建一个简单的应用程序来计算文本字段的字符,但是当用户输入文本时,将用户输入的字符串转换为var的函数和计算字符的函数是马上执行。这是代码:
import UIKit
class ViewController: UIViewController {
@IBOutlet var myTextField : UITextField
@IBOutlet var userTextField : UITextField
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view, typically from a nib.
myTextField.text = fullConstant
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
// Dispose of any resources that can be recreated.
}
@IBAction func modifyMyVariable(sender : AnyObject) {
myVariable = userTextField.text
}
@IBAction func clickMe(sender : AnyObject) {
countCharacters(&fullConstant)
println(fullConstant)
myTextField.text = fullConstant
}
}
这里是" OtherFile.swift"功能所在的位置:
import Foundation
var fullConstant = "Type something!"
var myVariable = ""
func modifyMyVariable() {
println()
}
func countCharacters(inout fullConstant: String) {
let FirstPart = "There are "
let LastPart = " characters"
var numberOfCharacters = countElements(myVariable)
switch numberOfCharacters {
case 0 :
fullConstant = "There isn't any character yet"
case 1 :
fullConstant = "There is just one character"
default :
fullConstant = FirstPart + String(numberOfCharacters) + LastPart
}
}
编辑userTextField后,两个函数都会立即执行,但如果用户输入一个字符,countCharacters
函数会在函数{{1}修改之前使用变量myVariable
。 },所以它不会计算最后添加的字符。
要解决此问题,我认为我可以从函数modifyMyvariable
调用函数countCharacters
,因此变量modifyMyVariable
在计算字符时已经更改。
答案 0 :(得分:0)
更改以下内容,看看它是否更容易解决您的问题。
将代码放入" OtherFile"在里面
class OtherFile {
}
阻止,并将该实例作为视图控制器中的变量保存到该类。您希望避免在类之外声明全局函数。
避免使用' inout'越多越好。每种语言都有它的惯例;在ObjC和Swift中,传入执行工作所需的值,并返回由该工作产生的值。所以:
func countCharacters(text: String) -> (String)
将所有内容放在一起,即可修改MyVariable'功能(应该真正被称为' textEdited')看起来像这样:
myVariable = userTextField.text
let characterCount = self.myOtherFileInstance.countCharacters(myVariable)
myTextField.text = characterCount
和其他功能(clickMe)应该删除。