0

可可代码 - 作为一个新手,请告诉我如何在我按下下一个按钮时在一页中打印 1024 字节的文件并在下一页中打印接下来的 1024 字节?这是我的代码现在的样子:

// 打印前 1024 个字节,之前禁用。

fileHandle= [NSFileHandle fileHandleForReadingAtPath: fileName];
string=[[NSMutableString alloc]init];
fileData= [fileHandle readDataOfLength: 1024];
[fileData getBytes: buf length: 1024];
[fileHandle seekToFileOffset: currentOffset];
}
for(i=0; i<=1023;i++)
{
    [string appendFormat: @"%02hhx ", buf[i]];
    //NSLog(@"Hex Values are:%x", string);
    [textview setString: string];


    [prevButton setEnabled: NO];
    [nextButton setEnabled: YES];
}

// 在按下下一个按钮后显示下一个 1024 字节。

-(IBAction) next: (id) sender
{
buf[i]= 0;
[textview setString:@""];
[prevButton setEnabled: YES];
   currentOffset+= 1023;
  [fileHandle seekToFileOffset: currentOffset];
  fileData= [fileHandle readDataOfLength: 1024];
  [fileData getBytes: buf length:1024];

  for(i=0; i<=1023;i++)
  {
      [string appendFormat:@"%02hhx ", buf[i]];
     //string=  [NSString stringWithFormat: @"%02hhx ", buf[i]];
      NSLog(@"Next Hex Values are:%x", string);
     [textview setString: string];
    }
}   

这里面临的问题是,在显示前 1024 个字节后,当我按下下一个按钮时,即使我清除了 textview,格式也会被附加。它显示从第 0 到第 2046 个字节。所以请告诉我当我按下下一个按钮时如何只打印第 1025 到第 2046 个字节。

4

1 回答 1

1

对该方法的每次调用都会next将十六进制输出附加到实例变量 (?)string中。您必须从next方法中的空字符串开始。要么打电话

[string setString:@""];

在 的开头next,或用局部变量替换实例变量

NSMutableString *string = [[NSMutableString alloc]init];

next方法中。

此外,正如 trojanfoe 正确评论的那样,您不应该调用

[textview setString: string];

在 for 循环内 1024 次,但在循环后调用一次。

于 2013-07-23T05:52:53.247 回答