1

iOS5.1でファイルに文字列を書き込もうとしていますが、ファイルの内容は常に(null)です。理由を理解するのを手伝ってもらえますか?これが私のコードです:

NSString *dir = [NSHomeDirectory() stringByAppendingPathComponent:@"mydirectory"];

NSString *letters = @"abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789";
        NSMutableString *randomString = [NSMutableString stringWithCapacity: 64];

for (int i=0; i<DEFAULT_LENGHT_OF_NOTE_FILE_ID; i++) 
{
    [randomString appendFormat: @"%C", [letters characterAtIndex: arc4random() % [letters length]]];
 }

 NSString* randomFileName = [NSString stringWithFormat:@"%@.html",randomString];
 NSString *filePath = [dir stringByAppendingPathComponent:randomFileName];

 NSString *str = @"Mystr";

//save content to the documents directory
 [str writeToFile:filePath atomically:NO encoding:NSStringEncodingConversionAllowLossy 
                       error:nil];


 NSString *content = [[NSString alloc] initWithContentsOfFile:filePath
                                                        usedEncoding:nil
                                                               error:nil];

 NSLog(@"%@", content);

NSLogは常に(null)を返します。私は何が間違っているのですか?

心から、

ゾリ

4

2 に答える 2

0

そのファイルへの書き込みアクセス権がありません。代わりに、ドキュメントフォルダに書き込んでみてください。

//Get the documents folder
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *documentsPath = [paths objectAtIndex:0];

...

NSString *filePath = [dir stringByAppendingPathComponent:randomFileName];
[str writeToFile:filePath atomically:NO encoding:NSStringEncodingConversionAllowLossy 
                       error:nil];

writeToFileのエラーをいつでも使用して印刷し、エラーを見つけることができます。

NSError *error = nil;
[str writeToFile:filePath atomically:NO encoding:NSStringEncodingConversionAllowLossy 
                       error:&error];
if(error) NSLog(@"Error:%@" error.localizedDescription);
于 2012-06-18T12:28:14.780 に答える
0

以下を変更します

NSString *dir = [NSHomeDirectory() stringByAppendingPathComponent:@"mydirectory"];

NSString *dir = [NSHomeDirectory() stringByAppendingPathComponent:@"Documents"];
于 2012-06-18T12:29:44.953 に答える