2011-08-01 9 views
0

私の問題/質問は、基本的には:どのようにscanfを使用して配列内の項目を呼び出すのですか?scanfを使用して配列内のアイテムを呼び出すにはどうすればよいですか?

、より詳細に:

私は通りに家の細部を与えるシンプルなアプリを作りたいです。 配列/辞書などが必要です。

家タイプ:テラス、デタッチなど(文字列)

家屋番号:(int型)

部屋:家の中で部屋の数(int型)

床面積:平方フィート。 (int)

住民:家に住む人数。 (INT)

など

私は(今が、後にiPhoneのUIを使用するためのコンソールで)家の番号を入力して、そのプロパティの詳細情報を受信するユーザーをお願いしたいと思います。時々私はすべての細部を、時には1つか2つを与えることを望みます。

私はプログラミングには慣れていますが、負荷を調べていて、配列、辞書、plistsについて学んでいます。私はさまざまな方法でそれらを使用することができるようですが、最良の方法は組み合わせを使用することです。

NSDictionaryを使用して各家の詳細を保存し、すべての家を配列に入れてplistで整理することを考えています。 配列内のhouseNo1、houseNo2、houseNo3など 配列内の各ハウス/アイテムは、キーを持つ辞書になります。

私は家の番号を配列の項目番号と一致させると、ユーザーが「3」を入力すると数字「3」を入力して情報を引き出すと思います配列のitem3、すなわち。 houseNo3。

私はscanfを使ってその選択肢をuserInputというintに代入しようとしていましたが、userInputを使用して選択する配列の項目を選択するプログラムを取得する方法を理解できません。

*途中で配列が0から始まるのを忘れていない、私はitem0に文字列を割り当てることができます。 "ドア番号が0の家がない"とか、それらの行に沿った文字列を割り当てることができます。

私はそれを明確にして欲しいと思っています。必要ならもっと説明することができます。どんな助けでも大歓迎です。 :)

歓声 クリス

PS。私は配列/辞書/ plistを一緒に置く方法を理解しています、それは配列から私が問題を抱えているデータを取り出すためのscanfです。誰もが不必要にそのことを説明するコード行を書くことを望まないだけでした。

答えて

0

プログラミングにようこそ! as scanfを最初に使用してiPhoneのUIに切り替えるまでは、scanfはCのメソッドであり、iOSではユーザーからNSStringオブジェクトを取得します(UITextViewなどから入力するために使用するもの) )。コンソールの使用からのscanfから

int inputInteger; 
printf("Enter a number:"); 
scanf("%d",&inputInteger); 
myHouse = [myArray objectAtIndex:inputInteger]; 

上記のチェックエラーチェックや有効な入力をしないことに注意してください(それが実際に入力した数だということ)のようなものを数を取得するには 。

NSStringから整数(プリミティブ)を取得すると、int inputInteger = [myInputString intValue];のようなものを使用して、inputIntegerを使用して上記のNSArrayのインデックスに移動できます。

一般的なプログラミングの脇に、0から始まる配列のインデックスに慣れるべきです。ユーザーが "1"を入力して最初の項目であることが予想される場合は、上記のメソッドを使用して配列をインデックスに使用します(実際には配列の最初の値であるインデックス0にあるものになります)。

+0

素早い返信と暖かい歓迎Jesseに感謝します。あなたの答えは意味をなさない、私は今何が間違っているのかを見ている。私は少し後にそれを与え、私がどのように乗っているかを知らせます。再度、感謝します。 – Kris

0

これはまさに私が必要なものでした。

私はこの小さなプログラムを作るために使っていましたが、私が望むように動作しますが、私が最良の方法でそれを行ったかどうかはわかりません。誰かが数分の余裕があり、私にクールなフィードバックを与えてくれるのならば!

#import <Foundation/Foundation.h> 

int main (int argc, const char * argv[]) { 
    NSAutoreleasePool * pool = [[NSAutoreleasePool alloc] init]; 

    //create the array 
    NSMutableArray *housesArray = [NSMutableArray array]; 

    //create dictionaries 
    NSMutableDictionary *house1Dict = [NSMutableDictionary dictionary]; 
    NSMutableDictionary *house2Dict = [NSMutableDictionary dictionary]; 
    NSMutableDictionary *house3Dict = [NSMutableDictionary dictionary]; 


    //put dictionaries in the array 
    [housesArray insertObject: house1Dict atIndex:0]; 
    [housesArray insertObject: house2Dict atIndex:1]; 
    [housesArray insertObject: house3Dict atIndex:2]; 

    //populate the dictionaries 
    [house1Dict setObject:@"1" forKey:@"House number"]; 
    [house1Dict setObject:@"semi-detached" forKey:@"House type"]; 
    [house1Dict setObject:@"5" forKey:@"rooms"]; 
    [house1Dict setObject:@"1,525" forKey:@"floor space"]; 
    [house1Dict setObject:@"sea" forKey:@"view"]; 
    [house1Dict setObject:@"friendly" forKey:@"neighbours"]; 

    [house2Dict setObject:@"2" forKey:@"House number"]; 
    [house2Dict setObject:@"detached" forKey:@"House type"]; 
    [house2Dict setObject:@"8" forKey:@"rooms"]; 
    [house2Dict setObject:@"2,685" forKey:@"floor space"]; 
    [house2Dict setObject:@"car park" forKey:@"view"]; 
    [house2Dict setObject:@"nosy" forKey:@"neighbours"]; 

    [house3Dict setObject:@"3" forKey:@"House number"]; 
    [house3Dict setObject:@"detached" forKey:@"House type"]; 
    [house3Dict setObject:@"2" forKey:@"rooms"]; 
    [house3Dict setObject:@"585" forKey:@"floor space"]; 
    [house3Dict setObject:@"rear" forKey:@"view"]; 
    [house3Dict setObject:@"drunk" forKey:@"neighbours"]; 


    //check its all there 
    /*NSLog(@"in the array is%@", housesArray); 
    NSLog(@"at index 0 is %@", [housesArray objectAtIndex:0]); 
    NSLog(@"at index 1 is %@", [housesArray objectAtIndex:1]);*/ 

    int inputInteger; 
    id myHouse; 
    printf("Which house are you interested in viewing?"); 
    scanf("%d", &inputInteger); 

    myHouse = [housesArray objectAtIndex:(inputInteger-1)]; 

    NSLog(@"House number %d is %@, has %@ rooms, beautiful %@ views and %@ neighbours.", 
      inputInteger, 
      [myHouse objectForKey:@"House type"], 
      [myHouse objectForKey:@"rooms"], 
      [myHouse objectForKey:@"view"], 
      [myHouse objectForKey:@"neighbours"]); 

    [pool drain]; 
    return 0; 
} 
関連する問題