我正在尝试在我的桌面上创建 9 个文本文件,这些文件由 for
循环中的变量i
命名。在每个文本文件中,我想写入一个由我的bigInt
函数确定的长值。然后,必须在文件中写入 long 值 1000 次,然后才能移动到下一个文本文件。 但是我不断收到错误:Incompatible pointer types sending 'NSString*' to parameter of type 'NSData*'
我的职能:
long bigInt(int i){
long big = 99*(i*99);
long evenBigger = big*(big*(big*big));
return evenBigger;
}
我的主要方法:
long use;
int x = 0;
for (int i = 1; i<10; i++) {
while (x < 1000) {
use = bigInt(i);
//[NSString stringWithFormat:@"%ld", use];
//NSString *content = @"Text to write to file";
NSString *path = [NSString stringWithFormat: @ "/Users/ou_snaaksie/Desktop/%i.txt", i];
//NSData *fileContents = [use dataUsingEncoding:NSUTF8StringEncoding];
[[NSFileManager defaultManager] createFileAtPath:path contents:[NSString stringWithFormat:@"%ld", use] attributes:nil];
x++;
}
}
我认为您需要在方法中传递 NSData 而不是 NSString 对象来contents
createFileAtPath:contents:attributes:
或者您可以执行以下操作:
if (![[NSFileManager defaultManager] fileExistsAtPath:path]) {
[[NSFileManager defaultManager] createFileAtPath:path contents:nil attributes:nil];
}
[[string dataUsingEncoding:NSUTF8StringEncoding] writeToFile:path atomically:YES];
当字符串需要 NSData 时,您将字符串作为内容传递。您必须将字符串转换为 NSData。在 while 循环的正文中尝试此操作:
use = bigInt(i);
NSString* str = [NSString stringWithFormat:@"%ld", use];
NSData* data_contents = [str dataUsingEncoding:NSUTF8StringEncoding];
NSString *path = [NSString stringWithFormat: @ "/tmp/%i.txt", i];
[data_contents writeToFile:path atomically:YES];
x++;