0

現在、iosでファイルとフォルダーを作成および管理する方法を学んでいます。しかし、私はフォルダ部分を正しく行うことができないようです。以下のコードの何が問題になっていますか?

- (void)viewDidLoad
{
    [super viewDidLoad];
    NSFileManager *filemgr;
    NSString *dataFile;
    NSString *docsDir;
    NSString *newDir;
    NSArray *dirPaths;
    BOOL isDir;

filemgr = [NSFileManager defaultManager];

// Identify the documents directory
dirPaths = NSSearchPathForDirectoriesInDomains(
                                               NSDocumentDirectory, NSUserDomainMask, YES);

docsDir = dirPaths[0];

// Build the path to the data file
if ([filemgr fileExistsAtPath:@"newfolder" isDirectory:&isDir] && isDir) {
    NSLog(@"folder already created!");
}else{
    NSLog(@"create new folder now...");
    newDir = [docsDir stringByAppendingPathComponent:@"newfolder"];
}

dataFile = [docsDir stringByAppendingPathComponent:
            @"/newfolder/datafile.dat"];

// Check if the file already exists
if ([filemgr fileExistsAtPath: dataFile])
{
    // Read file contents and display in textBox
    NSData *databuffer;
    databuffer = [filemgr contentsAtPath: dataFile];

    NSString *datastring = [[NSString alloc]
                            initWithData: databuffer
                            encoding:NSASCIIStringEncoding];

    _textBox.text = datastring;
}

}


- (IBAction)saveText:(id)sender {
    NSFileManager *filemgr;
    NSData *databuffer;
    NSString *dataFile;
    NSString *docsDir;
    NSArray *dirPaths;

    filemgr = [NSFileManager defaultManager];

    dirPaths = NSSearchPathForDirectoriesInDomains(
                                                   NSDocumentDirectory, NSUserDomainMask, YES);

    docsDir = dirPaths[0];
    dataFile = [docsDir
                stringByAppendingPathComponent: @"/newfolder/datafile.dat"];
    databuffer = [_textBox.text
                  dataUsingEncoding: NSASCIIStringEncoding];
    [filemgr createFileAtPath: dataFile
                     contents: databuffer attributes:nil];
}

何が起こるかわかりませんが、シミュレーションを実行するたびに、以前にテキストを入力したにもかかわらず、空白のテキスト フィールドが表示されます。Hereのチュートリアルに従い、ディレクトリ作成部分の他の例をグーグルで検索しました。何がうまくいかないようですか?? ありがとう!

4

2 に答える 2

2

問題は次の行にあります。

if ([filemgr fileExistsAtPath:@"newfolder" isDirectory:&isDir] && isDir) {
    NSLog(@"folder already created!"); 

fileExistsAtPathLikeの引数として完全なパスを渡す必要があります。

NSSTring *folderPath = [docsDir stringByAppendingPathComponent:
            @"newfolder"];
if ([filemgr fileExistsAtPath:folderPath isDirectory:&isDir] && isDir) {
        NSLog(@"folder already created!"); 
于 2013-06-10T03:50:13.260 に答える
0

誰かが探している場合に備えて、更新された作業バージョンを次に示します。

newDir = [docsDir stringByAppendingPathComponent:@"newfolder"];
    if ([filemgr fileExistsAtPath:newDir isDirectory:&isDir] && isDir) {
        NSLog(@"folder already created!");
    }else{
        NSLog(@"create new folder now...");
        [filemgr createDirectoryAtPath:newDir withIntermediateDirectories:YES
                            attributes:nil error: NULL];

    }
于 2013-06-10T04:22:37.963 に答える