2011-09-13 1 views
0
-(NSMutableDictionary *)request:(NSString *)requestString { 
    NSString *filepath = [[NSBundle mainBundle] pathForResource:requestString ofType:@"xml"]; 
    NSError *error = nil; 
    respString = [NSString stringWithContentsOfFile:filepath usedEncoding:nil error:&error]; 
NSLog(@"Ping xml"); 
    tempDict = [[NSMutableDictionary alloc] initWithDictionary:[parser readXMLString:respString]]; 
    NSLog(@"%@",tempDict); 
return tempDict; 
} 

До тех пор, все в порядке, NSLog показывает, что в tempDict есть 2 объекта и клавиши. Но тогда:объектForKey ничего не возвращает

-(int) authenticateUser { 
    NSMutableDictionary *dictionary = [[NSMutableDictionary alloc] initWithDictionary:[self request:@"login"]]; 
    if ([[dictionary objectForKey:@"sessionId0"] isEqualToString:@"-1"]) { 
     //Some code 
    } 
    else { 
     cError = 1; 
     NSLog(@"%@",[dictionary objectForKey:@"sessionId0"]); 
     appDelegate.sessionId = [dictionary objectForKey:@"sessionId0"]; 
    } 
    [dictionary release]; 
    return cError; 
} 

В последний еще, где cError является 1, NSLog выводит ноль для этого объекта. (NSLog для всего словаря также выводит ноль)

+0

Вы уверены, что '[запрос самостоятельно: @«Вход» ] 'не ноль? Попробуйте NSLog it в 'authenticateUser' – Saphrosit

+0

Просто выбросив это, но вы уверены, что хотите выделить новый словарь для результатов, а не просто использовать словарь, который возвращается [self request:]? Это не поможет вашему конкретному вопросу, просто для того, что вы здесь делаете, я не понимаю, почему вы хотите выделить целый новый словарь и скопировать результаты запроса: в него ... Для вашего фактического вопроса, может быть, вы забыли добавить запрос: метод к вашему интерфейсу для этого класса? – wallacer

+0

Оператор if проверяет наличие словаря objectForKey: @ "sessionID0"], но в вашей части вы проверяете наличие словаря objectForKey: @ "sessionID"]. Это то, что у вас есть в вашем фактическом коде, это ошибка ввода здесь? – sosborn

ответ

1

Поместите этот код в ваш и посмотреть, что выход для объекта Словаре ...

-(int) authenticateUser { 
NSDictionary* dict = (NSDictionary *)[self request:@"login"]; 
NSLog(@"Dictionary %@",dict);  

NSMutableDictionary *dictionary = [[NSMutableDictionary alloc] initWithDictionary:[self request:@"login"]]; 
    if ([[dictionary objectForKey:@"sessionId0"] isEqualToString:@"-1"]) { 
     //Some code 
    } 
    else { 
     cError = 1; 
     NSLog(@"%@",[dictionary objectForKey:@"sessionId"]); 
     appDelegate.sessionId = [dictionary objectForKey:@"sessionId"]; 
    } 
    [dictionary release]; 
    return cError; 
}