1

これはおそらく解決するのが非常に簡単な問題ですが、私は成功していません。ファイル「questions_famquiz_easy_110326.txt」をリソース フォルダーにコピーしました。アクセス (読み取り) して NSLog を実行し、読み取れることを確認します。

以下のコードは、Web で見つけた例に基づいて行ったテストの 1 つです。

Resources フォルダー内の txt ファイルにアクセスしようとしていますが、アクセスできません。解決策を探し、多くのテストを行いましたが、成功しませんでした。

次のコードでテストしています。

NSLog(@"\n \n >>>>>>viewDidLoad<<<<<<<<<");

NSError *error;

NSFileManager *fileManager = [NSFileManager defaultManager];
NSString *docsDirectory = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) objectAtIndex:0];
NSString *filePath = [docsDirectory stringByAppendingPathComponent:@"questions_famquiz_easy_110326.txt"];

if(![fileManager fileExistsAtPath:filePath])
{
    NSData *data = [NSData dataWithContentsOfFile:[[[NSBundle mainBundle] resourcePath] stringByAppendingString:@"/questions_famquiz_easy_110326.txt"]];
    [data writeToFile:filePath atomically:YES];
}

NSString *myString = [NSString stringWithContentsOfFile:filePath encoding:NSUTF8StringEncoding error:&error];
NSLog(@"myString: %@", myString);

NSLog(@"\n \n>>>>>>DONE WITH viewDidLoad<<<<<<<<<");

exit(0);  //====EXIT JUST FOR THE TEST====<<<

上記のコードは、開始された最初の viewController にあります。

私が得る出力は次のとおりです。

>>>>>>viewDidLoad<<<<<<<<<
2011-04-24 21:53:47.825 FamQuiz_R0_1[542:307] myString: (null)
2011-04-24 21:53:51.044 FamQuiz_R0_1[542:307] 
>>>>>>DONE WITH viewDidLoad<<<<<<<<<

誰かがこれを解決するのを手伝ってくれますか?

アップデート:

ファイルパスは次のとおりです。

2011-04-24 22:38:08.562 FamQuiz_R0_1[637:307] filePath: /var/mobile/Applications/7F5FDB03-0D22-46BC-91BC-4D268EB4BBEB/FamQuiz_R0_1.app/questions_famquiz_easy_110326.txt

ファイルを配置した場所は次のとおりです。 ここに画像の説明を入力

問題が解決しました:

NSString *myString = [NSString stringWithContentsOfFile:filePath encoding:NSUTF8StringEncoding error:&error];

上記を使用すると機能しませんでしたが、以下を使用すると機能し、テキストが印刷されました。

NSString *myString = [[NSString alloc] initWithContentsOfFile:filePath];
4

1 に答える 1

1

リソースフォルダーから読んでいません。ドキュメント ディレクトリから読み込もうとしています。したがって、ファイルがそこに存在しないため、 nil を返すことは理にかなっています。

変化する:

NSFileManager *fileManager = [NSFileManager defaultManager];
NSString *docsDirectory = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) objectAtIndex:0];
NSString *filePath = [docsDirectory stringByAppendingPathComponent:@"questions_famquiz_easy_110326.txt"];

に:

NSString *filePath = [[NSBundle mainBundle] pathForResource:@"questions_famquiz_easy_110326" ofType:@"txt"];

そしてそれはあなたのために働くはずです。

于 2011-04-24T20:29:09.107 に答える