5

私は以下のコードを持っています:

    NSString *fileName = [[NSUserDefaults standardUserDefaults] objectForKey:@"recentDownload"];
    NSString *fullPath = [NSBundle pathForResource:fileName ofType:@"txt" inDirectory:[NSHomeDirectory() stringByAppendingString:@"/Documents/"]];
    NSError *error = nil;

    [textViewerDownload setText:[NSString stringWithContentsOfFile:fullPath encoding: NSUTF8StringEncoding error:&error]];
  • textviewerdownloadtextviewファイルからテキストを表示しています。実際のファイル名は、NSUserDefault呼び出されrecentDownloadた .

  • これをビルドするとき、buttonこれの下にある と my applicationをクリックしますcrashes

  • 構文に何か問題がありますか、それとも単純なエラーですか?

4

3 に答える 3

9

このNSBundleクラスはアプリケーション バンドル内のものを見つけるために使用されますが、Documents ディレクトリはバンドルの外にあるため、パスを生成する方法は機能しません。代わりにこれを試してください:

NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory,
                                                     NSUserDomainMask,
                                                     YES);

NSString *fullPath = [[paths lastObject] stringByAppendingPathComponent:@"recentDownload.txt"]; 
于 2010-04-25T20:37:03.817 に答える
6
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
    NSString *documentsDirectory = [paths objectAtIndex:0];

    NSString *myPathDocs =  [documentsDirectory stringByAppendingPathComponent:@"myfile.txt"];

    if (![[NSFileManager defaultManager] fileExistsAtPath:myPathDocs])
    {
        NSString *myPathInfo = [[NSBundle mainBundle] pathForResource:@"myfile" ofType:@"txt"];
        NSFileManager *fileManager = [NSFileManager defaultManager];
        [fileManager copyItemAtPath:myPathInfo toPath:myPathDocs error:NULL];
    }       

    //Load from File
NSString *myString = [[NSString alloc] initWithContentsOfFile:myPathDocs encoding:NSUTF8StringEncoding error:NULL];

これは私のために働いた

ともあれ、皆様ありがとうございました..

于 2010-12-09T11:13:25.970 に答える
2

テキスト ファイルからの読み取り/書き込みについては、このURLを確認してください。

于 2011-05-16T07:40:12.170 に答える