NSData writeToFile在iPhone SDK上提供“可能无法响应”消息

时间:2009-12-02 06:47:09

标签: iphone nsdata iphone-sdk-3.1

我的NSData对象-writeToFile:方法存在问题,NSString对象也存在问题。

当我编译为软件时,NSData(或NSString)可能无法回复-writeToFile:消息。

当我运行该软件时,它会到达此行并成为例外。

我尝试写入文件的数据包含一个从互联网上下载的ASCII文件。

更新

我已经尝试将结果导入BOOL,但编译提供了相同的警告消息。我在这里忽略了什么吗?

这是我的代码。如果有人可以提供帮助。

NSString *docsDirectory = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) objectAtIndex:0];
NSString *path = [docsDirectory stringByAppendingPathComponent: Name];
NSFileManager *fileManager = [NSFileManager defaultManager];
NSError *error = [[NSError alloc] init];

[fileManager removeItemAtPath:path error:&error];

NSURL *url = [NSURL URLWithString:@"http://www.szrt.hu/xls/luxor.csv"];

NSMutableURLRequest *liveRequest = [[NSMutableURLRequest alloc] initWithURL:url];
[liveRequest setCachePolicy:NSURLRequestReloadIgnoringCacheData];

[liveRequest setValue:@"headervalue" forHTTPHeaderField:@"headerfield"];

NSURLResponse *response;
NSData *myData = [NSURLConnection sendSynchronousRequest:liveRequest returningResponse:&response error:&error];
NSString *myString=[[NSString alloc] initWithData:myData encoding:NSASCIIStringEncoding];

[myString writeToFile:path automatically:YES encoding:NSASCIIStringEncoding];

[myData release];
[myString release];
return true;

警告如下。

  

/Users/endre/Documents/Luxor/Classes/LuxorFile.m:48:0 /Users/endre/Documents/Luxor/Classes/LuxorFile.m:48:警告:'NSString'可能无法响应'-writeToFile :自动:编码:'

     

/Users/endre/Documents/Luxor/Classes/LuxorFile.m:48:0 /Users/endre/Documents/Luxor/Classes/LuxorFile.m:48:警告:(没有匹配方法签名的消息

     

/Users/endre/Documents/Luxor/Classes/LuxorFile.m:48:0 /Users/endre/Documents/Luxor/Classes/LuxorFile.m:48:警告:初始化从没有强制转换的指针生成整数

     

/Users/endre/Documents/Luxor/Classes/LuxorFile.m:48:0 /Users/endre/Documents/Luxor/Classes/LuxorFile.m:48:警告:未使用的变量'writeResult'

     

/Users/endre/Documents/Luxor/Classes/LuxorFile.m:68:0 /Users/endre/Documents/Luxor/Classes/LuxorFile.m:68:警告:'NSString'可能无法响应'-writeToFile :原子:编码:'

1 个答案:

答案 0 :(得分:3)

- (BOOL)writeToFile:(NSString *)path atomically:(BOOL)flag;

是您想要的方法。所以,

...
BOOL result = [data writeToFile:path atomically:atomically];
...

应该这样做。