2012-06-13 4 views
0

я пытаюсь «SQL Select» информацию из TableWeb По -JSON code-избавиться от JSON символов переменных() [] {} для ObjectiveC переменной

в Xcode, когда я «NSLog» информация это выглядит так: Я пытаюсь избавиться от этих символов() []. Как я могу получить только значение переменной? спасибо всем

2012-06-13 12:24:54.572 Gym31Vads[5628:16103] (
    204 
) 

2012-06-13 12:33:33.911 Gym31Vads[5628:16103] (
    204 
) 

2012-06-13 12:35:12.830 Gym31Vads[5628:16103] (
    204 
) 

вот мой JASON код на веб-сайте:

$var_email=$_POST['mail']; 
$query = mysql_query(" SELECT `pk` FROM `adidas` WHERE `mail` = ('{$var_email}') LIMIT 1); 
$users = array(); 
while ($row = mysql_fetch_array($query)) 
{ 
    $users = array($row['pk']); 
} 
echo json_encode($users); 

здесь код ObjectiveC:

NSMutableURLRequest *request = [[NSMutableURLRequest alloc]init];   
NSString * urlString = [NSString stringWithFormat:@"myURLselectPK.php"]; 
[request setURL:[NSURL URLWithString:urlString]]; 
[request setHTTPMethod:@"POST"]; 
NSString*paramDataString=[NSString stringWithFormat:@"mail=%@",txt_mail.text]; 
NSData*paramData=[paramDataString dataUsingEncoding:NSUTF8StringEncoding]; 
[request setHTTPBody:paramData]; 
NSURLResponse *response; 
NSError *error; 

NSData *aData = [NSURLConnection sendSynchronousRequest:request returningResponse:&response error:&error]; 

NSURL*url=[NSURL URLWithString:@"myURLselectPK.php"]; 

NSData*data=[NSData dataWithContentsOfURL:url]; 

NSError*err=nil; 
NSMutableDictionary*jsondict=[NSJSONSerialization JSONObjectWithData:aData options:kNilOptions error:&err]; 

NSMutableArray*json=(NSMutableArray*)[NSJSONSerialization JSONObjectWithData:data options:kNilOptions error:&err]; 

NSLog(@"%@",jsondict); 

NSError *error2; 
NSData *jsonData = [NSJSONSerialization dataWithJSONObject:jsondict 
                 options:NSJSONWritingPrettyPrinted 
                 error:&error2]; 
NSString*Str=[[NSString alloc] initWithData:jsonData encoding:NSUTF8StringEncoding]; 
NSString*str_screen=[NSString stringWithFormat:@"%@",Str]; 

lbl_pk_check.text=[NSString stringWithFormat:@"%@",Str]; 

ответ

0

NSLog является диагностическим инструментом. У вас нет каких-либо параметров относительно того, как он форматирует объекты с помощью спецификатора %@. Если вы хотите какой-то другой формат, вам нужно самому построить строку. Например, чтобы войти содержимое массива без скобок:

NSMutableString* logString = [[NSMutableString alloc] init]; 
for (id anObject in myArray) 
{ 
    if ([logString length] > 0) 
    { 
     [logString appendString: @", "]; 
    } 
    [logString appendString: [anObject description]]; 
} 
NSLog(%@", lofString); 

Вы не можете делать ничего об этом материале:

2012-06-13 12:35:12.830 Gym31Vads[5628:16103] 

на всех.

+0

Сложение Faild: нет видимых @interface для 'NSString' объявляет селектор 'appendString:' –

+0

@ Ofir_Tel.Aviv К сожалению, должен быть NSMutableString (как должно быть очевидно из объекта выделено). – JeremyP

0

NSLog показывает() вокруг вашей переменной, чтобы обозначить, что это массив, который вы печатаете. Если вы хотите отображать только значение, находящееся внутри массива, вы должны сначала извлечь его, будь то по ключу, если вы используете словарь или индекс, если вы печатаете массив.

Во всяком случае, похоже, вы уделяете слишком много внимания тому, что вы показываете в NSLog. Что показывает, что не существует реального значения вашей переменной, а просто строковое представление, отображаемое в журнале. На самом деле ваша переменная не будет иметь никаких символов() или [], но только 204 заключена в контейнер массива.

На боковой ноте вы печатаете переменную NSMutableDictionary *jsondict, но на самом деле у вас есть массив внутри. Этот метод десериализации JSON, который вы используете, вернул (наиболее вероятно) неизменяемый массив, и вы должны назначить его переменной NSArray *. Если вы хотите изменить объект, вы должны вызвать метод [NSMutableArray arrayWithArray:], вы не можете просто отбрасывать один на другой.

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