2015-05-27 34 views
1

這是登錄頁面的代碼,我想將輸入與存儲的數據進行比較。 進口的UIKit如何比較存儲在CoreData中的密碼和用戶輸入的值?

import CoreData 

class ViewController: UIViewController { 

@IBOutlet weak var userName: UITextField! 

@IBOutlet weak var passwordText: UITextField! 

@IBAction func login(sender: AnyObject) { 

var appdel : AppDelegate = (UIApplication.sharedApplication().delegate as! AppDelegate) 

var context : NSManagedObjectContext = appdel.managedObjectContext! 

var request1 = NSFetchRequest(entityName: "User") 

NSEntityDescription newUser = [NSEntityDescription entityForName: @"User" inManagedObjectContext:context]; 

NSPredicate *predicate = [NSPredicate predicateWithFormat:@"username == %@ AND password == %@",self.UsernameTextField.Text, self.PasswordTextField.Text]; 

var result : NSArray = context.executeFetchRequest(request1, error: nil)! 

if (result.count > 0){ 

println("true") 

} 

context.save(nil) 

} 
+2

您是否將Objective-C與Swift代碼混合在同一個文件中? –

+1

你真的以純文本存儲密碼嗎?我希望他們對任何事情都沒有什麼重要。 –

回答

0

你幾乎是正確的,並讓魔術發生只需要一個步驟。這就像設置謂詞要求如下

request1.predicate = predicate 
1

你的謂語是正確的。但是你應該考慮你的要求。

四方面的考慮:

  • 你不需要save上下文
  • 你不應該存儲在覈心數據的憑據。也許鑰匙串適合這個。
  • 變量應該用camelNotation命名。例如usernameTextField而不是UsernameTextField
  • 爲什麼Objective-C和Swift代碼在同一個文件中?
+1

request1沒有謂詞,將返回所有用戶,總是 –

+0

感謝您指出。 ;)@zellb –

相關問題