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:automatically」に応答しない場合があります:エンコーディング:'

/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:atomically に応答しない場合があります:エンコーディング:'

4

1 に答える 1

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

ご希望の方法です。そう、

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

やるべきです。

于 2009-12-02T06:51:02.563 に答える