NSMutabledata字节容量

时间:2012-12-08 02:00:11

标签: ios nsmutabledata

  

可能重复:
  NSMutableData dissapearing

当我有一个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的解释会有所帮助。

1 个答案:

答案 0 :(得分: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。