Swift 如何将存储在CoreData中的密码值与用户输入进行比较?

Swift 如何将存储在CoreData中的密码值与用户输入进行比较?,swift,core-data,ios8,xcode6,Swift,Core Data,Ios8,Xcode6,这是登录页面的代码,我想在其中比较输入和存储的数据。 导入UIKit import CoreData class ViewController: UIViewController { @IBOutlet weak var userName: UITextField! @IBOutlet weak var passwordText: UITextField! @IBAction func login(sender: AnyObject) { var appdel : AppDelegat

这是登录页面的代码,我想在其中比较输入和存储的数据。 导入UIKit

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)

}

你的想法几乎是正确的,只需再多走一步就可以实现魔法。这就是将谓词设置为请求,如下所示

request1.predicate = predicate

你的谓词是正确的。但是你应该考虑你的要求

四点考虑:

  • 您不需要
    保存上下文
  • 您不应该在核心数据中存储凭据。也许钥匙链会适合这个
  • 变量应使用
    符号命名
    。e、 g
    usernameTextField
    和not
    usernameTextField
  • 为什么Objective-C和Swift代码在同一个文件中

request1没有谓词,它将返回所有用户。您是否将Objective-C与Swift代码混合在同一个文件中?您是否真的以纯文本形式存储密码?我希望他们不是为了什么,哪怕是一点点重要的事。