如何比较CoreData中存储的密码值与用户输入?

时间:2015-05-27 11:10:05

标签: 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 : 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 个答案:

答案 0 :(得分:1)

你的谓词是正确的。但是你应该设置你的请求。

四个考虑因素:

  • 您不需要save上下文
  • 您不应将凭据存储在Core Data中。也许Keychain适合这个。
  • 变量应以camelNotation命名。例如usernameTextField而非UsernameTextField
  • 为什么Objective-C和Swift代码在同一个文件中?

答案 1 :(得分:0)

你几乎是正确的,只需要再迈出一步就能让魔法发生。这就像设置谓词一样请求如下

request1.predicate = predicate