Objective C(iPhone SDK)でテキストファイルから一行毎データを読み出す方法

このQ&Aのポイント
  • Objective C(iPhone SDK)を使用してテキストファイルから一行毎にデータを読み出す方法を教えてください。
  • テキストファイルを読み込み、一行ずつデータを取得し、それをTableViewの項目として表示したいです。
  • 初心者のため、現在はテキストファイルをコンパイルできている段階ですが、データを配列に格納する方法がわかりません。
回答を見る
  • ベストアンサー

Objective C(iPhone SDK)でテキストファイルから一

Objective C(iPhone SDK)でテキストファイルから一行毎データを読み出す方法を教えてください. つい最近Objective-Cを始めた初心者です. サーバ上にあるテキストファイルを読み込み,一行ごとデータを取り出し,その一行ずつ取り出したデータをTableViewの項目として表示したいと思っています.現在コンパイルが出来ているのは, NSString* text; NSString* path = @"(URL)test.txt"; NSError* error; text = [NSString stringWithContentsOfFile:path encoding:NSUTF8StringEncoding error:&error]; までです.また,読み込むテキストファイルの内容は 0001 0002 0003 0004 [EOF] となっています.このデータの一行ずつを配列に格納する方法を教えてください,よろしくお願いします.

質問者が選んだベストアンサー

  • ベストアンサー
  • harawo
  • ベストアンサー率58% (3742/6450)
回答No.1

NSStringのメソッド「- (NSArray *)componentsSeparatedByString: (NSString *)separator」あるいは「- (NSArray *)componentsSeparatedByCharactersInSet: (NSCharacterSet *)separator」を使います。 表形式になっているテキストファイルから、数値を取り出す場合は、NSScannerクラスを使います。もっともこちらのほうは、私は使ったことがないので、紹介のみにとどめさせていただきます。

tkato696
質問者

お礼

ご解答ありがとうございます.紹介してくださったクラスを使って実際にデータを取り出してみたいと思います.

関連するQ&A

  • objective-cとC++の連携

    cocos2dを使ってobjective-cの関数を呼び出したい場合、返り値がstringなどvoidでないときどう記述すればいいのでしょうか? //DBClassBridge.h string DBClassBridge::getStringColumn(string table, string field, string where, id target) { [DBClass_objc getStringColumn:[[[NSString alloc] initWithCString:table.c_str() encoding:NSUTF8StringEncoding] autorelease] field:[[[NSString alloc] initWithCString:field.c_str() encoding:NSUTF8StringEncoding] autorelease] where:[[[NSString alloc] initWithCString:where.c_str() encoding:NSUTF8StringEncoding] autorelease] target:(id)target];   //return ?? } returnのあとに何か入れる感じですかね? わかる人いたら是非お願いします。

  • 【Objective-C】文字列の連結でいい方法ありませんか?

    Objective-Cで文字列、NSStringの連結をするのに、stringByAppendingString:を使って以下のように書きました。 NSString *str1 = @"AAA"; NSString *str2 = [str1 stringByAppendingString: [NSString stringWithCString: "BBB" encoding: NSUTF8StringEncoding]]; しかし、この冗長なコードを何度も書くのは大変です。 そこで、マクロを使って以下のように整理してみました。 #define AS(A,B) [(A) stringByAppendingString:([NSString stringWithCString: B encoding: NSUTF8StringEncoding])] NSString *str2 = AS(str1,"BBB"); 少しはマシになりましたが、できれば+演算子を使って、以下のような、直感的にもわかるコードにしたいです。 NSString *str2 = str1 + "BBB"; NSStringクラスの+プラス演算子を書き換えて、(メソッドオーバーライド) NSString *str2 = str1 + "BBB"; の様ななコードを書く事はObjective-Cで、できるのでしょうか? 以上、ご指導のほど、宜しくお願いいたします。

  • Objective-C文字列からC言語文字列に変換したいのですが、どう

    Objective-C文字列からC言語文字列に変換したいのですが、どうすればよいでしょうか? C言語からObjective-cなら NSString *cToOc = [[NSString alloc] initWithCString:"結果" encoding:NSUTF8StringEncoding]; NSLog(@"%@", cToOc); でよいのですが、その逆が知りたいです。 あとこの cToOcは以下のように解放しないといけないのでしょうか? [cToOc release];

  • objective-c テキストファイルのカウンタ

    ■環境:xcode4.2 ■iOS:5.1 DocumentDirectoryに保存した テキストデータを利用した、 カウンターを制作しようとしております。 現状、テキストファイルから数字を読み出し、 1数値を足して、上書き保存するカウンターを試していますが、 結果蓄積されるテキストファイルは「1」になって、 以降2 3 ~と増えずに、思った動作をしておりません。 私は経験が浅く基本的なところが間違えているかもしれません。 どなたか、こちらの具体的な解決方法を ご教示いただけますでしょうか? よろしくお願いいたします。 //カウント テキスト読み込み NSArray *pathcount = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES); NSString *count_moto = [[pathcount objectAtIndex:0]stringByAppendingPathComponent:@"count.text"]; //カウント加算 int count = [count_moto intValue]; int countplus = count++; NSString *fixcount = [NSString stringWithFormat:@"%d",countplus]; //カウント テキスト書き込み [fixcount writeToFile:count_moto atomically:YES encoding:NSUTF8StringEncoding error:NULL];

  • iPhoneアプリ開発 ファイル書き込み

    iPhoneアプリ開発につきまして、質問させて頂きます。 csvファイルへのデータの出力を試みているのですが上手くできません。 プログラムとログ内容を以下に記述しました。 「abc」と予め書いてある「hoge.csv」ファイルに「stringaaaaaaaaaaa」を書き込み保存しておきたいのですが、上手くいきません。 ログ内容を見る限り、「abc」が読み込めているので、パスは合っていると思っています。また、writeToFileをしてから読み込むと「stringaaaaaaaaaaa」が読み込めるため、どこかには書き込めているような気がします。 しかし、毎回同じ処理をしても、最初に読み込まれるのは「abc」です。「hoge.csv」をテキストエディタで読み込んでも表示されるのは「abc」です。 また、iPhoneシミュレーターで実行した結果は以下のログ内容なのですが、iPhone実機で動作させると、writeToFileを行ったあとでも「abc」が出力されます。 何か原因を思い当たる方、教えて頂ければ幸いです。 - (void)viewDidLoad { [super viewDidLoad]; [self setTitle:@"Stress Application"]; printf("viewdidload"); NSString *text = [[NSString alloc] initWithFormat:@"stringaaaaaaaaaaaaaaa"]; NSString *_path = [[NSBundle mainBundle] pathForResource:@"hoge" ofType:@"csv"]; //atomicallyは補助ファイルを使ってファイルの破損を防止するかどうか NSLog(@"%@",[NSString stringWithContentsOfFile:_path encoding:NSUTF8StringEncoding error:nil]); [text writeToFile:_path atomically:YES encoding:NSUTF8StringEncoding error:nil]; NSLog(@"%@",[NSString stringWithContentsOfFile:_path encoding:NSUTF8StringEncoding error:nil]); NSLog(@"%@",text); } <ログ内容> 2012-10-31 12:35:10.187 ThinkGearTouch[17182:1a903] FinishLaunching viewdidload2012-10-31 12:35:10.204 ThinkGearTouch[17182:1a903] abc 2012-10-31 12:35:10.212 ThinkGearTouch[17182:1a903] stringaaaaaaaaaaaaaaa 2012-10-31 12:35:10.212 ThinkGearTouch[17182:1a903] stringaaaaaaaaaaaaaaa

  • xcode iOSでのファイル操作について。

    知っている方、いましたらご教授お願いいたします。 ■現状 xCodeにてios7アプリを開発中で、ボタンが押下されたら テキストファイルへ文字列を保存するものを作っています。 しかしながら、なぜかテキストファイルへの保存がiosシュミレーター上で失敗してしまいます。 ソースコードは以下になります。 ■ソース NSString *homeDir; NSString *docDir; NSString *filePath; NSString *str; NSError *error; //Homeディレクトリのパス取得 homeDir=NSHomeDirectory(); //Documentsディレクトリのパス作成 docDir=[homeDir stringByAppendingPathComponent:@"Documents"]; //ファイルのパス作成 filePath=[docDir stringByAppendingPathComponent:@"test.txt"]; //ファイルのパスを表示 NSLog(filePath); //ファイルへの書き込み str=@"test¥ntest¥ntest"; //testを3行書く //[str writeToFile:filePath atomically:YES]; BOOL result = [str writeToFile:inSaveFilePath atomically:YES encoding:NSUTF8StringEncoding error:&error]; if(result != YES) { NSLog(@"Error:%@", [error localizedDescription]); } ■エラー内容 error NSError * domain: @"NSCocoaErrorDomain" - code: 4 0x08dd4130 なにが悪いのかがさっぱり分からず困惑しています。 サンプルページなどでも構いませんので、ご教授のほどお願いいたします。 以上、よろしくお願いいたします。

  • locale::idとid型について

    objective-cでなんでも入れられるid型がありますが、cocos2dの環境下でc++から呼び出したいときにidにあう型がありません。一応std::local::idというのを見つけたのですが void DBClassBridge::updateColumn(string table, string field, locale::id input, string where, string target) { [DBClass_objc updateColumn:[[[NSString alloc] initWithCString:table.c_str() encoding:NSUTF8StringEncoding] autorelease] field:[[[NSString alloc] initWithCString:field.c_str() encoding:NSUTF8StringEncoding] autorelease] input:(id)input //ここでエラー where:[[[NSString alloc] initWithCString:where.c_str() encoding:NSUTF8StringEncoding] autorelease] target:[[[NSString alloc] initWithCString:target.c_str() encoding:NSUTF8StringEncoding] autorelease]]; } 以下のようなエラーが出ます。 Cannot convert 'locale::id' to 'id' without a conversion operator やはりデータ型があっていないっぽいです。 objective-cのid型にはどのデータ型を用いればいいのでしょうか?またはlocal::idからidへとどう変換すればいいのでしょうか? 知っている方、是非お願いします。

  • Iphoneシミュレータでtxtファイルを作成する

    Iphoneシミュレータでtxtファイルを作成する 現在、Iphoneシミュレータ(3.1.3)上でプログラムを書いているのですがうまく動きません。 動作の内容はファイルを作成して、そこに文字列を書き込むだけです。 具体的にコードをはらせていただきますと、 NSArray* paths; NSString* path; paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory,NSUserDomainMask, YES); path = [paths objectAtIndex:0]; path = [path stringByAppendingPathComponent:@"text.txt"];   NSString *str = @"hello";   [str writeToFile:path atomically:YES encodidng:NSUTF8StringEncoding error:nil]; このようなコードを書いております。 コンパイルは正常に通るのですが、実行してみると最後のwriteToFileの行までくると強制的におちてしまいます。 どこがおかしいのでしょうか?ご指導よろしくおねがいします。

  • objectiv-cで困っています。教えてください

    objectiv-cの勉強を始めたばかりです。ネットで調べながら進めているのですが、プロジェクト内のテキストファイルではなく、サーバにあるテキストファイルの内容を読み込み、NSLogに出力しようとしているのですが、うまくいきません。xxxxxxxxxxxの部分にテキストファイルのあるURLを入れています。 -----------------textloadViewController.h------------------------------ #import <UIKit/UIKit.h> @interface textloadViewController : UIViewController @end -----------------textloadViewController.m------------------------------ #import "textloadViewController.h" @interface textloadViewController () @end @implementation textloadViewController - (void)viewDidLoad { [super viewDidLoad]; // Do any additional setup after loading the view, typically from a nib. } - (void)didReceiveMemoryWarning { [super didReceiveMemoryWarning]; // Dispose of any resources that can be recreated. NSError *error = nil; NSString *filePath = [[NSBundle mainBundle] pathForResource:@"xxxxxxxxxxx" ofType:@"txt"]; NSString *string = [NSString stringWithContentsOfFile:filePath encoding:NSUTF8StringEncoding error:&error]; NSLog(@"%@", string); } @end 外部のテキストファイルを読み込む方法を教えてください。よろしくお願いします。

  • iphoneアプリを初作成中でファイルオープンで困

    ボタンを押したらファイルから文字列を読み込み、表示するサンプルアプリを作成しようとしております。(xcode4初コーディングです) しかし、ビルド後にボタンを押しても何の反応もありません。 ファイル(テキスト)のロケーションが違うのかと思いあちこち変えてもうまくいかず。何か私が根本的に間違っているような気がしてきました。 何がおかしいのかご教授願いますでしょうか。 xcode4 プロジェクトロケーション: デスクトップ>>sample テキストファイルロケーション: デスクトップ>>sample>>Resources>>text.txt テキストファイル中身: aiueo(形式はUTF-8) sampleViewController.m -(IBAction)userbutton:(id)sender{ self.label1.text = [NSString stringWithContentsOfFile:@"text.txt" encoding:NSUTF8StringEncoding error:&error]; です。ビルドは問題なくできているようです。 こんな質問の仕方でよいのかもわかりませんが、よろしくお願い致します。

専門家に質問してみよう