2

ファイルに文字列を書き込んで、それをアプリ内のapplicationSupportフォルダーに保存しようとしています。しかし、私のNSLog()ステートメントはデバッガーに何も記録しません。デバッガーで試してみましたが、内容がnilであることがわかりますので、何も出力されないのではないかと思いますが、nilに設定されている理由はわかりません。誰かが私の間違いを見ることができますか?

 NSString *document = [[[[[[[[description stringByAppendingString:@" "]stringByAppendingString:focus]stringByAppendingString:@" "]stringByAppendingString:level]stringByAppendingString:@" "]stringByAppendingString:equipment]stringByAppendingString:@" "]stringByAppendingString:waterDepth];
//NSLog(@"%@", document);

//get the documents directory:
NSArray *paths = NSSearchPathForDirectoriesInDomains
(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *supportDirectory = [paths objectAtIndex:0];

//filename
NSString *filename = [NSString stringWithFormat:[_nameTextField.text stringByAppendingString:@".txt"], supportDirectory];

[document writeToFile:filename atomically:NO encoding:NSStringEncodingConversionAllowLossy error:nil];

NSString *content = [[NSString alloc]initWithContentsOfFile:filename usedEncoding:nil error:nil];
NSLog(@"%@", content);
4

3 に答える 3

6

filename間違っている。次の形式である必要があります"directory/file.extension"stringByAppendingPathComponentメソッドを使用して、stringByAppendingPathExtensionそのような文字列を作成できます。

NSString *filename = [supportDirectory stringByAppendingPathComponent:[_nameTextField.text stringByAppendingPathExtension:@"txt"]];

また、補足として、最初の行は次のように書き直す必要がありますstringWithFormat

NSString *document = [NSString stringWithFormat:@"%@ %@ %@ %@ %@", description, focus, level, equipment, waterDepth];
于 2012-04-27T14:48:57.417 に答える
0

初期化ファイル名が間違っています。そのはず:

  NSString *filename = [NSString stringWithFormat:@"%@/%@", supportDirectory,[_nameTextField.text stringByAppendingString:@".txt"]];

それはうまくいくでしょう!幸運を:)

于 2012-04-27T15:09:12.873 に答える
-4

The

NSString *filename = [NSString stringWithFormat:[_nameTextField.text stringByAppendingString:@".txt"], supportDirectory];

間違っている。そのはず:

NSString *filename = [NSString stringWithFormat:"%@%@",[_nameTextField.text stringByAppendingString:@".txt"], supportDirectory];
于 2012-04-27T14:45:06.907 に答える