2015-05-09 2 views
0

На первом экране моего приложения вы вводите четырехзначный код. Когда вы нажимаете «Готово», он автоматически сохраняет код и приложение переключает представления на следующий экран. На новом экране он извлекает сохраненный код и ищет через plist, пытаясь найти строку, с которой она связана. В настоящее время он отлично работает, за исключением случаев, когда пользователь вводит код, который отсутствует в plist.Как я могу обнаружить ошибку при поиске в списке свойств?

Как я могу научить его выдавать предупреждение об ошибке кода в plist?

Это первая точка зрения:

NSString *pureString = [[detectionString componentsSeparatedByCharactersInSet:[[NSCharacterSet decimalDigitCharacterSet] invertedSet]] componentsJoinedByString:@""]; 

NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults]; 
[defaults setObject:pureString forKey:@"beaverID"]; 
[defaults synchronize]; 

ViewController *Flip = [[ViewController alloc] initWithNibName:nil bundle:nil]; 
[self presentModalViewController:Flip animated:YES]; 

Затем на второй взгляд:

- (void)viewDidLoad { 
    //Loading the unique student's ID code: 
    NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults]; 
    NSString *loadstring = [defaults objectForKey:@"beaverID"]; 

    //Loading the user's first name from the first .plist: 
    NSString *error2 = nil; 
    NSPropertyListFormat format2; 
    NSString *plistPath2; 
    NSString *rootPath2 = [NSSearchPathForDirectoriesInDomains(NSDocumentationDirectory, NSUserDomainMask, YES)objectAtIndex:0]; 

    NSString *file2 = @"User Data.plist"; 
    plistPath2 = [rootPath2 stringByAppendingPathComponent:file2]; 

    if (![[NSFileManager defaultManager] fileExistsAtPath:plistPath2]) { 
     plistPath2 = [[NSBundle mainBundle] pathForResource:@"User Data" ofType:@"plist"]; 
    } 

    NSData *plistData2 = [[NSFileManager defaultManager] contentsAtPath:plistPath2]; 
    NSDictionary *tempDict2 = (NSDictionary *)[NSPropertyListSerialization propertyListFromData:plistData2 mutabilityOption:NSPropertyListMutableContainersAndLeaves format:&format2 errorDescription:&error2]; 

    NSString *person = [@"BCDS" stringByAppendingString:loadstring]; 
    NSString *string = [tempDict2 objectForKey:person]; 
    NSString *message = [@"Hello, " stringByAppendingString:string]; 
    welcome.text = message; 
} 
+1

Пожалуйста, добавьте код – Azat

+0

Просто добавил код. –

+0

Вы хотите, чтобы pureString сохранялась между запусками вашего приложения? – rdelmar

ответ

1

Просто проверьте, если objectForKey возвращает NIL:

NSString *string = [tempDict2 objectForKey:person]; 
if (string == nil) 
    [[[UIAlertView alloc] 
     initWithTitle:@"Error" message:@"Cannot find item" 
     delegate:nil cancelButtonTitle:@"OK" otherButtonTitles:nil] show]; 
Смежные вопросы