2011-08-11 7 views
0

とNSMutableArrayのに書き込みます。基本的に、私は次のように辞書を持つ配列を構築しています:読んで、これは非常に簡単であると思われるが、私はちょうどカントはどこでもそれを行うための方法を見つけるように見える辞書

NSArray *times = [NSArray arrayWithObjects:@"3pm",@"4pm",@"5pm",nil]; 
NSDictionary *timesDict = [NSDictionary dictionaryWithObject:times forKey:@"Times"]; 

NSArray *locations = [NSArray arrayWithObjects:@"Miami", @"New York", @"Las Vegas", nil]; 
NSDictionary *locationsDict = [NSDictionary dictionaryWithObject:locations forKey:@"Locations"]; 

[listOfItems addObject:timesDict]; 
[listOfItems addObject:locationsDict]; 

を、ユーザの入力に基づいて動的に多くの時間と場所を追加したいと思います。

は、私はタイムズ/場所キーに基づいてそれらを追加することができますどのように、私は新しい「時間」と新しい「場所」(両方ともNSStringのされている)を保持する新しい変数を持っていることを考えると? (もちろんコンパイルdoesntの....)

[listOfItems addObject:newLocation forkey:@"Locations"]; 
[listOfItems addObject:newTime forkey:@"Times"]; 

も場所や時間から読み、そのよう:

理想的には私は、次の操作を行いたいです、* STR = listOfItemsから読み取るNSStringのforkey: "タイムズ"、atIndex:(遊離型の:))BLA

は、任意の助けに感謝。ありがとう!

答えて

4

なぜ2つの別々の辞書を使用しますか?

されたインデックスの
[dataDict objectForKey:@"Times"] 

または特定の時間:あなたとあなたの配列にアクセスすることができる方法

NSMutableArray *times = [NSMutableArray arrayWithObjects:@"3pm",@"4pm",@"5pm",nil]; 
NSMutableArray *locations = [NSMutableArray arrayWithObjects:@"Miami", @"New York", @"Las Vegas", nil]; 
NSDictionary *dataDict=[[NSDictionary alloc] initWithObjectsAndKeys:times,@"Times",locations,@"Locations",nil]; 

:二つの配列が含まれているものを使用してみてください

[[dataDict objectForKey:@"Times"] objectAtIndex:0]; 

やタイムズに値を追加配列:

[[dataDict objectForKey:@"Times"] addObject:@"Today"]; 
+0

すごいね、ありがとう! – TommyG

+0

ところで、このオプションは、実行時にクラッシュするようだ... [[dataDict objectForKey:@ "タイムズ"]のaddObject: "今日" @]。 – TommyG

+0

デバッガは何を言っていますか?時配列が可変であるかどうかを確認してください... – kviksilver

2

方法について:

[[listOfItems locationsDict] addObject:newLocation]; 

[[listOfItems timesDict] addObject:newTime]; 
+0

+1ターnks。それはうまくいくかもしれませんが、場所を作ることを必要とします。キーに基づいて読み書きする方法はありませんか?また、あなたはこの問題についてどのように読んでいますか?インデックス3の場所を教えてください。 – TommyG

+0

次のようなことができます:[[myDictionary objectAtIndex:] valueForKey:]データを読み込みます。 –

2

あなたはNSMutableArrayの/ NSMutableDictionaryのインスタンスを作成する必要があります。その後、ディラン・ライヒが提案した方法を使用することができます。

2

これはあなたの時間と場所を表すためにクラスを使用するにはよいタイミングです。プロジェクトの新しいプログラマが理解しやすくなるように、管理が容易になります。

@interface TimesAndLocations : NSObject 
{ 
    //Initialize these in init and release in dealloc 
    NSMutableArray *_times; 
    NSMutableArray *_locations; 
} 

//Use these methods to add times and locations 
-(void)addTime:(NSString*)time; 
-(void)addLocation:(NSString*)location; 

//Could add remove methods here as well 

@end 
関連する問題