0

-JSONコードでTableWebから情報を「SQL選択」しようとしています-

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
)

Web 上の私の 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 に答える