2013-06-06 2 views
0

Ниже мой PHP код, который посылает ответ на запрос WebService:строк равных не работает IOS

$query = "select name,email,password from User where email='".$email."' AND password='".$password."'"; 
$result = mysql_query($query); 
$num_rows = mysql_num_rows($result); 


if($num_rows==1) 
{ 
    sendResponse(200, json_encode("match")); 
} 

if($num_rows==0) 
{ 
    sendResponse(204, json_encode("not match")); 
} 

Ниже мой IOS код:

-(void)connection:(NSURLConnection *)connection didReceiveData:(NSData *)data 
{ 
    NSString *status = [[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding]; 
    NSLog(@" Returned Json data : %@",status); 


    if ([status isEqualToString:@"match"]) 
    { 
     AppDelegate *appDelegate = [[UIApplication sharedApplication] delegate]; 

     [appDelegate OpenTabController]; 
    } 

    //Boolean flag = [status isEqualToString:@"not match"]; 

    //NSLog(@"flag : %d",flag); 

    if ([status isEqualToString:@"not match"]) 
    { 
     NSLog(@"not match"); 


     UIAlertView *alertView = [[UIAlertView alloc] 
             initWithTitle:@"Invalid email or password" 
             message:@"" 
             delegate:nil 
             cancelButtonTitle:@"OK" 
             otherButtonTitles:nil]; 
     [alertView show]; 

    } 
} 

линии [status isEqualToString:@"not match"] не работает.

+0

Вы преобразовали ответ JSON из веб-службы для mainuplated в код iOS? –

+0

Да, я сделал это. NSString * status = [[NSString alloc] initWithData: кодировка данных: NSUTF8StringEncoding]; NSLog (@ «Возвращенные данные Json:% @», статус); –

+0

И что печатает сообщение, которое вы ожидаете? – Eric

ответ

1

Ребята, я нашел решение:

код PHP:

if($num_rows==1) 
{ 
    $status = array(
    "status" => "match", 
    ); 

    sendResponse(200, json_encode($status)); 
} 

if($num_rows==0) 
{ 
    $status = array(
    "status" => "not match", 
    ); 

    sendResponse(204, json_encode($status)); 
} 

IOS Код:

NSDictionary *result = [NSJSONSerialization JSONObjectWithData:data options:NSJSONReadingMutableContainers error: nil]; 

NSString *status = [result objectForKey:@"status"]; 
NSLog(@"Returned Json data : %@",status); 
0

Вы можете попробовать отладить и проверить, что такое значение в status. Я не думаю, что в вашем коде есть проблема со строковым сравнением.

0

Сначала вам необходимо включить библиотеку SBJson в свой проект. Затем импортировать json.h

#import "JSON.h" 

Найти код ниже:

NSString *status = [[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding]; 
NSDictionary *dic = [status JSONValue]; 

Этот словарь является вашим result.With этот словарь, вы можете проверить значение ключа.

0

PHP json_encode escaped space char. И он должен сделать из «не совпадения» с json, например {'not match'}

2

Прежде всего, вы преобразовываете строку в ответ json. В вашем PHP-коде используйте ассоциативный массив, чтобы создать пару значений ключа, а затем преобразовать данные в формат JSON в iOS с помощью анализатора JSON. Используйте objectForKey метод на переоборудованном словаре

PHP код

if($num_rows==1) 
{ 
$status = "match"; 
$status_array = array("status"=>"$status"); 
    sendResponse(200, json_encode($status_array)); 
} 

if($num_rows==0) 
{ 
$status = "not match"; 
$status_array = array("status"=>"$status"); 
    sendResponse(204, json_encode($status_array)); 
} 

IOS код Используйте процесс ниже для разбора JSON и, соответственно, получить значение по мере необходимости. http://www.raywenderlich.com/5492/working-with-json-in-ios-5

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