-2

サーバーから応答を受け取りました:

 [NSURLConnection
     sendAsynchronousRequest:request
     queue:[[NSOperationQueue alloc] init]
     completionHandler:^(NSURLResponse *response,
                         NSData *data,
                         NSError *error)
     {

         if ([data length] >0 && error == nil)
         {
             NSLog(@"DATA1: %@",data);
             NSString *content;
             content = [NSString stringWithUTF8String:[data bytes]];
             NSLog(@"DATA2: %@",content);

ここで何かがおかしい。2番目はデータNSLOGを示していますnullが、データがnullの場合、どのように渡すことができますかif statement? 最初のログは私を示しています: <636f6e66 69726d65 64>.

私は時々それがうまくいくと言わなければなりません!それはどういうわけか値に依存します...

4

1 に答える 1

1

最初のログではNSDataインスタンスを出力し、2番目のログでNSStringはデータから生成するためです。ただし、データが有効でないUTF-8の場合(NULで終了stringWithUTF8String:しておらず、NULで終了する文字列が必要なため、最後に停止せず、ガベージを読み取る可能性があるため)、を返しますnil

あなたが欲しいものは:

content = [[[NSString alloc] initWithBytes:data.bytes length:data.length encoding:NSUTF8StringEncoding] autorelease];
于 2013-02-06T15:28:52.273 に答える