2015-05-27 35 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 –

相关问题