0

我正在尝试通过 -JSON 代码从 TableWeb 中“选择”信息

在 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];
4

2 回答 2

0

NSLog在您的变量周围显示 ( ) 以表示它是您正在打印的数组。如果您只想显示数组内部的值,则必须首先获取它,无论是使用字典时按键还是打印数组时按索引。

无论如何,您似乎对您所展示的内容过于关注NSLog。显示的不是变量的实际值,而只是要在日志中显示的字符串表示形式。实际上,您的变量不会有任何 ( ) 或 [ ] 符号,而只有 204 包含在数组容器中。

附带说明一下,您正在打印NSMutableDictionary *jsondict变量,但实际上您内部有一个数组。您正在使用的 JSON 反序列化方法返回了一个(很可能)不可变数组,您应该将其分配给NSArray *变量。如果你想要一个可变对象,你必须调用[NSMutableArray arrayWithArray:]方法,你不能简单地将一个对象转换为另一个对象。

于 2012-06-13T11:11:18.513 回答
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] 

一点也不。

于 2012-06-13T10:50:29.400 回答