3

複数の単語で構成されるテキストファイルがあります。それらはすべて改行で区切られています。

私が試したこと:

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

if (filePath) { // This does trigger, so the file is actually found.

    NSArray *arr = [filePath componentsSeparatedByString:@"\n"]; 

}

私も試したこと:

NSMutableArray * lines = [[NSMutableArray alloc] initWithArray:[filePath componentsSeparatedByString:@"\n"] copyItems: YES];

NSLogを使用して行を読み込んだときにのみファイルパスを取得しているように見えるため、これらのどちらも機能していないようです。どなたかお助けいただけませんか?

lines 配列は、テキストファイルの場所の文字列である 1 つのオブジェクトのみで構成されているようです。

各文字列がテキスタイル内の線で区切られた文字列である配列が必要です。

4

5 に答える 5

13

まず、アプリケーション バンドル内のファイルを取得する必要があります。つまり、アプリケーションの「Resources」フォルダー内に配置する必要があります。

次に、次のように読むことができます。

NSString* path = [[NSBundle mainBundle] pathForResource:@"filename" 
                                                 ofType:@"txt"];

次に、コンテンツを にロードするのNSStringはさらに簡単です。

NSString* content = [NSString stringWithContentsOfFile:path
                                              encoding:NSUTF8StringEncoding
                                                 error:NULL];

次に配列を作成します。

NSArray *arr = [content componentsSeparatedByString:@"\n"]; //might also be @"\r" check both.
于 2012-09-06T08:27:19.047 に答える
1

そこで行うことは、filePath をハッキングすることだけです。ファイルからデータをロードしていません。

それを行う方法はたくさんあります。 [NSData initWithContentsOfURL...始まりかもしれない

于 2012-09-06T08:24:24.987 に答える
1

メソッド [NSString componentsSeparatedByString:] は、文字列自体で使用されます。つまり、このパスのファイルの内容ではなく、ファイル パスです。

ファイルから読み取る方法はたくさんあります。Dave DeLong は、この問題に対する巧妙なアプローチを投稿しています。ここで確認してください

于 2012-09-06T08:31:27.500 に答える
0

NSString *stringFileContent = [NSString stringWithContentsOfFile:[[NSBundle mainBundle] pathForResource: @"yourfilename" ofType: @"txt"] encoding:NSUTF8StringEncoding エラー:&error];

于 2016-08-04T15:10:14.683 に答える