2015-03-23 1 views
0

в Objective C я могу сравнить мою CoreData со строкойсравнить CoreData шпагат

- (IBAction)loginBut:(id)sender { 
    AppDelegate *appDel = [[UIApplication sharedApplication] delegate]; 
    NSManagedObjectContext *context = [appDel managedObjectContext]; 
    /*NSEntityDescription *newPassword = [NSEntityDescription insertNewObjectForEntityForName:@"Pinpass" inManagedObjectContext:context]; 
    //[newPassword setValue:@"9090" forKey:@"password"]; 
    //[context save:nil]; 
    NSFetchRequest *request = [NSFetchRequest fetchRequestWithEntityName:@"Pinpass"]; 
    request.returnsObjectsAsFaults = NO; 
    NSArray *result = [context executeFetchRequest:request error:nil]; 
    NSLog(@"%@", result);*/ 
    NSFetchRequest *request = [NSFetchRequest fetchRequestWithEntityName:@"Pinpass"]; 
    NSPredicate *pred = [NSPredicate predicateWithFormat:@"(password = %@)", loginField.text]; 
    [request setPredicate:pred]; 
    NSError *error; 
    NSArray *result = [context executeFetchRequest:request error:&error]; ; 


    if (result.count > 0){ 

     //If([[textField text] compare:entity.attribute]==NSOrderedSame) NSLog(@"Correct!"); 
       if ([[loginField text] isEqual:[result valueForKey:@"password"]]) 
{ 
       UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"Sign in ok" 
                 message:@"Sign in succsess!!" 
                 delegate:self 
                 cancelButtonTitle:@"OK" 
                 otherButtonTitles:nil]; 
                 [alert show]; 
     } 
     else{ UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"Sign in ok" 
                  message:@"Sign in succsess!!" 
                  delegate:self 
                cancelButtonTitle:@"Cancel" 
                otherButtonTitles:@"Say Hello",nil]; } 

    } 

что-то случилось с моим кодом ?? или просто плохое использование функций

+0

Необходимо более подробно описать, что вы ожидаете и что видите. В частности, какой бит кода? Действительно ли код просмотра предупреждений ... – Wain

ответ

0
if ([[loginField text] isEqual:[result valueForKey:@"password"]]) 

result массив, так что вы должны указать индекс, а затем проверить значение по этому индексу.

Например, выше строка должна быть чем-то вроде

if ([[loginField text] isEqual:[[result valueForKey:@"password"] lastObject]]) 
0

Есть несколько вещей здесь:

  1. Ваш предикат проверяет для управляемого объекта с атрибутом password равным loginField.text, так что любой совпадение автоматически является правильным паролем по определению.
  2. Ваш result является NSArray. Предположительно, вы хотите сравнить текст textField с одним объектом в этом массиве. Что-то вроде этого:

if (result.count > 0) { firstResult = [result firstObject]; if ([[loginField text] isEqual:[firstResult valueForKey:@"password"]]) { do stuff... } }

0

Результат массив содержит имя NSManagedObject Pinpass. Таким образом, вам нужно получить значение от него и сравнить ...

if (result.count > 0){ 
Pinpass *pinObj=[result objectAtIndex:0]; 

if ([[loginField text] isEqual:[pinObj valueForKey:@"password"]]) 
{ 
//AlertView 
} 
else 
{ 
//AlertView 
} 

} 

Надеюсь, это поможет вам!

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