2015-05-27 3 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 с быстрым кодом в том же файле? –

+1

Вы действительно храните пароли в текстовом формате? Надеюсь, они не для чего-то даже незначительного. –

ответ

0

Ваш почти правильно, и только еще один шаг, необходимый, чтобы сделать волшебство произойдет. Thats, чтобы задать предикат для запроса, как указано ниже:

request1.predicate = predicate 
1

Ваш предикат правильный. Но вы должны указать на свой запрос.

Четыре соображения:

  • Вам не нужно save контекст
  • вы не должны хранить учетные данные в основных данных. Возможно, Keychain будет подходящим для этого.
  • переменной следует называть с помощью camelNotation. например usernameTextField, а не UsernameTextField
  • Почему Objective-C и Swift в том же файле?
+1

request1 не имеет предиката, и это вернет всех пользователей, всегда –

+0

Спасибо за указание. ;) @zellb –

Смежные вопросы