2014-01-03 3 views
0

Я новичок в Core Data.I разработал приложение. В моем заявлении у меня есть Регистрация, Вход, Забытые пароли.Как мы извлекаем данные, которые сохраняются с использованием основных данных в iOS

В регистрационной форме я напишу этот код для регистрации.

NSEntityDescription *entitydesc = [NSEntityDescription entityForName:@"User" inManagedObjectContext:context]; 
NSManagedObject *newuser = [[NSManagedObject alloc]initWithEntity:entitydesc insertIntoManagedObjectContext:context]; 

[newuser setValue:self.registerUsername.text forKey:@"username"]; 
[newuser setValue:self.registerPassword.text forKey:@"password"]; 
[newuser setValue:self.registerConfirmPassword.text forKey:@"confirmpassword"]; 
[newuser setValue:self.registerMobileNumber.text forKey:@"mobilenumber"]; 

NSError *error; 
[context save:&error]; 

В Логиниться я пишу этот код:

NSEntityDescription *entitydesc = [NSEntityDescription entityForName:@"User" inManagedObjectContext:context]; 

NSFetchRequest *request = [[NSFetchRequest alloc]init]; 
    [request setEntity:entitydesc]; 

    NSPredicate *predicate = [NSPredicate predicateWithFormat:@"username like %@ and password like %@",self.logUsername.text,self.logPassword.text]; 
    [request setPredicate:predicate]; 

    NSError *error; 
    NSArray *matchingData = [context executeFetchRequest:request error:&error]; 
    if(matchingData.count<=0) 
    { 
     UIAlertView *alert = [[UIAlertView alloc]initWithTitle:@"Error!" message:@"Username and password does not match" delegate:self cancelButtonTitle:@"OK" otherButtonTitles: nil]; 
     [alert show]; 

    } 
    else 
    { 
     NSString *username; 
     NSString *password; 
     for(NSManagedObject *obj in matchingData) 
     { 
      username = [obj valueForKey:@"username"]; 
      password = [obj valueForKey:@"password"]; 
     } 
     SecurityHome *securityhome = [[SecurityHome alloc]init]; 
     [self.navigationController pushViewController:securityhome animated:YES]; 
    } 

} 

Оба работали нормально. Теперь я хочу отображать пароль на странице «Забыли пароль», если пользователь правильно ввел имя пользователя и номер мобильного телефона. Как я могу это сделать?

+2

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

+0

Я с Дехленом для этого. Вы действительно не должны этого делать. Как бы то ни было, вам может понадобиться эта информация для других целей, поэтому я дал ответ на ваш вопрос –

ответ

0

Прежде чем задавать этот вопрос, вы должны были сделать «поиск». Как бы то ни было, позволь мне сделать это за тебя. Ну вот.
Core Data NSFetchResult guide for developer
Ray wenderlich- Really nice tutorial

В обоих перечисленных связей, я пытаюсь предложить NSFetchResultControllers, так как они быстро & легко. Здесь вы можете увидеть разницу Без NSFetchResultController, NSManagedObjectContext * moc = [self managedObjectContext]; NSEntityDescription * entityDescription = [NSEntityDescription entityForName: @ «Сотрудник» inManagedObjectContext: moc]; NSFetchRequest * request = [[[NSFetchRequest alloc] init] autorelease]; [запрос setEntity: entityDescription];

// Set example predicate and sort orderings... 
NSNumber *minimumSalary = ...; 
NSPredicate *predicate = [NSPredicate predicateWithFormat: 
    @"(lastName LIKE[c] 'Worsley') AND (salary > %@)", minimumSalary]; 
[request setPredicate:predicate]; 

NSSortDescriptor *sortDescriptor = [[NSSortDescriptor alloc] 
    initWithKey:@"firstName" ascending:YES]; 
[request setSortDescriptors:[NSArray arrayWithObject:sortDescriptor]]; 
[sortDescriptor release]; 

NSError *error = nil; 
NSArray *array = [moc executeFetchRequest:request error:&error]; 
if (array == nil) 
{ 
    // Deal with error... 
} 

С NSFetchresultController

[[self managedObjectContext] fetchObjectsForEntityName:@"Employee" withPredicate: 
    @"(lastName LIKE[c] 'Worsley') AND (salary > %@)", minimumSalary]; 

Эти примеры для Famous таблицы сотрудников. Переведите код в соответствии с вашим требованием. Если вы не в состоянии работать вокруг с этим кодом для какой-либо причине, не дайте мне знать ..

0
You can use this code for fetching details and pass the object to Forgot class and show there. 


-(User*)getUserCredentialDetails:(NSUInteger)mobilenumber 
{ 

    NSError *error = nil; 

    NSFetchRequest *request = [[NSFetchRequest alloc] init]; 

    NSEntityDescription *entity = [NSEntityDescription entityForName:@"User" inManagedObjectContext:managedObjectContext]; 

    [request setEntity:entity]; 

    NSPredicate *predicate = [NSPredicate predicateWithFormat:@"mobilenumber = %d",mobileNumber]; 

    [request setPredicate:predicate]; 

    NSArray * resultArray = [managedObjectContext executeFetchRequest:request error:&error]; 

    [request release]; 

    if (error != nil) 
     { 

     NSLog(@"Unresolved error %@, %@", error, [error userInfo]); 

     } 

    return [resultArray lastObject]; 

} 
1

Данный пример предикат и сортировки упорядоченности ...

NSNumber *minimumSalary = ...; 
NSPredicate *predicate = [NSPredicate predicateWithFormat: 
@"(lastName LIKE[c] 'Worsley') AND (salary > %@)", minimumSalary]; 
[request setPredicate:predicate]; 

NSSortDescriptor *sortDescriptor = [[NSSortDescriptor alloc] 
initWithKey:@"firstName" ascending:YES]; 
[request setSortDescriptors:[NSArray arrayWithObject:sortDescriptor]]; 
[sortDescriptor release]; 

NSError *error = nil; 
NSArray *array = [moc executeFetchRequest:request error:&error]; 
if (array == nil) 
{ 
    // Deal with error... 
}