我正在使用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