0

我有一个验证用户凭据、名称和 PIN 的 Mac 应用程序。使用CoreData,我如何引用key来自特定的value?例如,在数据库中,John Doe 的 PIN 为 1234。当用户选择他们的姓名时,他们输入他们的 PIN 并点击登录按钮。如果 pinCoreData与其数据库中的内容匹配,则允许用户继续。我已经准备好一切准备就绪,我只是不知道如何从 Core Data 获取 PIN 值。然后,我会将其与用户输入的字符串值进行比较,以验证用户的凭据。它可能很简单,但我无法弄清楚。实体名称:Employee属性:“employeeName”和“employeePin”。

- (IBAction)loginButton:(NSButton *)sender {
NSString *name = self.chooseNameBox.selectedCell;
NSString *pass = self.pinEntryField.stringValue;

context.???
}

任何帮助表示赞赏。

4

1 回答 1

0

您需要像这样设置获取请求:

NSError *aError = nil;
NSEntityDescription *entityDescription = [NSEntityDescription
                                          entityForName:@"Employee" inManagedObjectContext:self.currentManagedObjectContext];
NSFetchRequest *request = [[NSFetchRequest alloc] init];
[request setEntity:entityDescription];
NSPredicate* entriesPredicate = [NSPredicate predicateWithFormat:@"employeeName = %@", name];
NSSortDescriptor* sortDescriptor = [NSSortDescriptor sortDescriptorWithKey:@"name" ascending:YES];

[request setPredicate:entriesPredicate];
[request setSortDescriptors:@[sortDescriptor]];

NSArray *employeeArray = [self.currentManagedObjectContext executeFetchRequest:request error:&aError];

EmployeeObject *retrievedEmployee = [employeeArray lastObject];
NSString *retrievedPin = retrievedEmployee.employeePin;

另外,我同意@trojanfoe 的观点,您需要在将 pin 插入数据库之前对其进行哈希处理。

于 2013-03-13T14:24:49.657 回答