-4

NSArray の行で分割された txt ファイルの内容をロードするにはどうすればよいですか? 基本的に、要素の数を書き込む(そして機能する)ファイル「count.txt」、最初の行のタイトルを表す「1t.txt」、およびコンテンツを表す「1.txt」があります。つまり、値ごとに値を追加するだけです。次に、ユーザーがテーブルビューのタイトルにヒットすると、「* .txt」の内容を読みたいと思います(配列ファイルのインデックスがあれば明らかに簡単です)

今のところ、次のコードを使用します。

- (void) loadMainArray
{
    for (int i = 1; i <= max; i++)
    {
    NSString *currentNumber;
    currentNumber = [NSString stringWithFormat:@"%it", i];
    NSLog(@"%i° file read", i);
    NSFileManager *fileManager = [NSFileManager defaultManager];
    NSString *dataFilePath = [[NSBundle mainBundle] pathForResource:currentNumber ofType:@"txt"];
    if ([fileManager fileExistsAtPath:dataFilePath])
    {
        NSString *content = [NSString stringWithContentsOfFile:dataFilePath encoding:NSUTF8StringEncoding error:nil];
        NSArray *parsed = [content componentsSeparatedByCharactersInSet:[NSCharacterSet newlineCharacterSet]];
        mainArray = (__bridge NSMutableArray*)CFPropertyListCreateDeepCopy(kCFAllocatorDefault, (CFPropertyListRef)parsed, kCFPropertyListMutableContainers);
        NSLog(@"%@", parsed);

    }
    else{
    }
    }
}

(コードも調整されていない場合は申し訳ありませんが、stackoverflow ではあまりできません) とにかく、ViewLoad でこのメソッドを呼び出した後、Signal SIGABRT を取得します。どこが間違っていますか?

NB: max も設定されています。NSLog で確認しました。mainArray は NSMutableArray です。

4

1 に答える 1

5

あなたが欲しいのは

-(NSArray *)componentsSeparatedByString:(NSString *)separator;

指定されたセパレーターで文字列を分割します。したがって、基本的にはこれを行います: 

NSArray *parsed = [content componentsSeparatedByString:@"\n"];
//assuming you want a newLine as a separator

今、あなたは続けてあなたのことをしてください。楽しむ

編集:

可変配列へのブリッジがここで正しいかどうかわかりません。NSData-Object を使用して、呼び出しの戻り値をキャッチする必要があるようです

CFPropertyListCreateDeepCopy

必要に応じて、後でいつでも MutableArray に変換できます。これは、SIGABRT エラーについても説明しています。

于 2013-02-18T22:05:12.930 に答える