我正在使用swift在iOS应用程序中构建注册/登录系统。我设置了一个DynamoDB表,我可以从该表发送和加载数据。但是,当我尝试扫描表时遇到了问题。我正在使用扫描来检查并确保电子邮件,用户名和密码是原创的。扫描功能的工作原理,并把所有的数据了,但是当我尝试使用,当我说像数据:无法使用DynamoDB扫描的信息
let results = task.result as! AWSDynamoDBPaginatedOutput
for r in results.items{
if (self.emailTextField.text == r.userEmail){
self.emailMessageLabel.hidden = false
self.emailTextField.text = nil
}
整体功能就会犯糊涂。因为它所做的是检查emailTextField是否等于任何结果,即使它是一次,其他时间也不是。所以它会说emailMessageLabel.hidden的真实次数与emailTextField不等于任何值的次数一样多,并且假设它是一次。所以基本上答案是真的和假的,我不能使用这些数据。我该如何解决?我一直在努力修复它几天。我会附上我一直在尝试使用的所有代码。
扫描功能
func verifyAndActivateAccount(expression : AWSDynamoDBScanExpression) {
self.emailMessageLabel.hidden = true
self.nameMessageLabel.hidden = true
self.passwordMessageLabel.hidden = true
let tableRow = DDBTableRow()
let dynamoDBObjectMapper = AWSDynamoDBObjectMapper.defaultDynamoDBObjectMapper()
dynamoDBObjectMapper.scan(DDBTableRow.self, expression: expression) .continueWithExecutor(BFExecutor.mainThreadExecutor(),
withBlock: { (task:BFTask!) -> AnyObject! in
if (task.error == nil) {
let results = task.result as! AWSDynamoDBPaginatedOutput
for r in results.items{
if (self.emailTextField.text == r.userEmail){
self.emailMessageLabel.hidden = false
}
if (self.nameTextField.text == r.UserID) {
self.nameMessageLabel.hidden = false
}
if (self.passwordTextField.text == r.userPassword){
self.passwordMessageLabel.hidden = false
}
}
}else{
self.giveSignUpAlert("Scan didn't work.")
}
return nil
})
}
按钮被按下
@IBAction func storeRegisterInfo(sender: UIButton) {
let exp = AWSDynamoDBScanExpression()
self.verifyAndActivateAccount(exp)
//Check for original info
let tableRow = DDBTableRow()
tableRow?.UserID = self.nameTextField.text
tableRow?.userEmail = self.emailTextField.text
tableRow?.userPassword = self.passwordTextField.text
let userEmail = emailTextField.text
let userName = nameTextField.text
let userPassword = passwordTextField.text
let userConfirm = confirmTextField.text
if userPassword != userConfirm {
giveSignUpAlert("Your Passwords Don't Match!")
}
if (self.passwordTextField.text == self.confirmTextField.text) {
if (userEmail.isEmpty || userName.isEmpty || userPassword.isEmpty || userConfirm.isEmpty){
giveSignUpAlert("All Field Are Required")
}else{
self.insertDataIntoTable(tableRow)
}
}
}
定义原文。你的意思是说,不同用户之间不能重复使用电子邮件和用户名和密码?这可能会或可能没有意义。一个人可能希望在同一个电子邮件地址上创建多个用户。两个或两个以上的人很可能会选择相同的密码,所以为什么要求密码是唯一的?一旦发现重叠的电子邮件或用户名,您是否需要跳出分页扫描? –
是的,我想使它成为每个用户名和电子邮件从未被使用过的,但我愿意让密码成为非原创性的。我不知道你的意思是打破我的分页扫描。 – JFDeveloper