Eth*_*ler -2 xcode nstimer ios parse-platform swift
我正在制作一个社交媒体应用程序,并且注册屏幕中的一个功能是检查用户名是否实时拍摄并放置X或检查是否已采用(再次实时).我使用计时器来完成此操作但由于某种原因,计时器在几秒钟后停止.这是怎么回事?有没有更好的方法来做这件事?
override func viewDidLoad() {
username.delegate = self
email.delegate = self
password.delegate = self
var timer = NSTimer()
timer = NSTimer.scheduledTimerWithTimeInterval(0.01, target: self, selector: Selector("checkOrX"), userInfo: nil, repeats: true)
}
func checkOrX() {
var query = PFQuery(className: "_User")
query.whereKey("username", equalTo: self.username.text)
query.findObjectsInBackgroundWithBlock { (users, error) -> Void in
if let users = users {
self.usernameCheck.image = UIImage(named: "X.png")
} else {
self.usernameCheck.image = UIImage(named: "Check.png")
}
}
}
Run Code Online (Sandbox Code Playgroud)
每次用户更改实际用户名时,您应该最多发送一个请求,而不是每隔多次发送100个请求.
为什么你当前的解决方案很糟糕
你能做什么:
第一个"解决方案"的示例版本可能看起来像
func viewDidLoad() {
// ...
self.username.addTarget(self, action: "textFieldDidChange:", forControlEvents: UIControlEvents.EditingChanged)
}
func textFieldDidChange(textField: UITextField) {
if textField == self.username {
checkOrX()
}
}
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
224 次 |
最近记录: |