0

重複の可能性:
NSMutableDataが消える

NSMutableData変数がある場合、私のプログラムでは、90810バイトになると常にその内容をダンプします。データのバイト数により、データが失われますか?これがコードです。

- (void)fetchEntries
{
        // Construct a URL that will ask the service for what you want 
    NSURL *url = [NSURL URLWithString: @"http://www.nhara.org/scored_races-2013.htm"];//

    // Put that URL into an NSURLRequest
    NSURLRequest *req = [NSURLRequest requestWithURL:url];

    // Create a connection that will exchange this request for data from the URL 
    connection = [[NSURLConnection alloc] initWithRequest:req delegate:self startImmediately:YES];
}

- (void)connection:(NSURLConnection *)conn didReceiveData:(NSData *)data 
{
    // Add the incoming chunk of data to the container we are keeping 
    // The data always comes in the correct order 
     [xmlData appendData:data];


    NSString *xmlCheck = [[[NSString alloc] initWithData:xmlData encoding:NSUTF8StringEncoding]autorelease];
    NSLog(@"xmlCheck = %@", xmlCheck);

}
-(void)connection:(NSURLConnection *)connection didFailWithError:(NSError *)error
{
    NSLog(@"error= %@",error);
}

- (void)connectionDidFinishLoading:(NSURLConnection *)conn {

    // We are just checking to make sure we are getting the XML 
    NSString *xmlCheck = [[[NSString alloc] initWithData:xmlData encoding:NSUTF8StringEncoding] autorelease];
    NSLog(@"xmlCheck2 = %@", xmlCheck);
}

ここが途切れますが、それは変わります

<td style="font-size: 12.0pt; color: black; font-weight: 400; text-decoration: none; text-underline-style: none; font-family: Arial Narrow; font-style: normal; text-align: general; vertical-align: bottom; white-space: nowrap; border-left: medium none; border-right: 1.0pt solid windowtext; border-top: medium none; border-bottom: 1.0pt solid windowtext; padding-left: 1px; padding-right: 1px; padding-top: 1px; background: #EAF1DD">
    King Pine</td>
    <td style="font-size: 12.0pt; color: black; font-weight: 400; text-decoration: none; text-underline-style: none; font-family: Arial Narrow; text-align: right; font-style: normal; vertical-align: bottom; white-space: nowrap; border-left: medium none; border-right: 1.0pt solid windowtext; border-top: medium none; bor
2012-12-07 19:35:48.652 race tracker[2357:c07] xmlCheck = (null)
2012-12-07 19:43:28.914 race tracker[2357:c07] xmlCheck2 = (null)
2012-12-07 19:43:28.921 race tracker[2357:c07] (
)

NSMutableDataが機能しない理由を理解しようとしているので、NSMutableDataの説明が役立ちます。

4

1 に答える 1

1

NSMutableData任意のサイズに成長します。

を実行するcurl http://www.nhara.org/scored_races-2013.htm > file.txtと、サーバーが返すファイルの長さは正確に90810バイトであることがわかります。そのため、そのバイト数が返されます。いっぱいになるのは可変データオブジェクトではなく、90810が正確に正しい長さであるということです。

あなたの問題はここにあります:

[[NSString alloc] initWithData:xmlData encoding:NSUTF8StringEncoding]

サーバーが返す文字列は有効なUTF-8ではありません。これを自分で確認するNSASCIIStringEncodingには、(すべてのバイトが有効なエンコーディングです)を試してください。文字列が正しく蓄積されていることがわかります。

返されたファイルを検索した後の特定の問題は、位置74,963のバイト(活版印刷の一重引用符に使用される0x92)です。あなたが望むように見えますNSWindowsCP1252StringEncoding。そのHTMLをアップロードした人は誰でも、Microsoftのコードページ1252を使用したようです。

于 2012-12-08T02:23:22.097 に答える