この P リスト ディクショナリを考えると、次のようになります。
3位になるにはどうすればいいですか?キー - 「ディナー」 - それ自体が辞書でもあり、その値を正しく解析しますか?
それとも、すべてをより簡単に理解できるように、この P リストを最初から別の方法で構成する必要がありますか?
「MenuDictionary」からすべてのキーを取得し、それらを配列に格納することから始めて、私が得たものは次のとおりです。
// Load the Property-List file into the Dictionary:
MenuDictionary = [[NSDictionary alloc] initWithContentsOfFile:menuPath];
// Get all the Keys from the Dictionary, put 'em into a 'mealTimesArray':
mealTimesArray = [[MenuDictionary allKeys] sortedArrayUsingSelector:@selector(compare:)];
// For each meal-type KEY, grab all the Values (dishes) in it and store them in a 'mealDishesArray':
for (NSString *mealTime in mealTimesArray) {
NSArray *mealDishesArray = [MenuDictionary valueForKey:mealTime];
// Now I can iterate through the 'mealDishesArray' to access each dish at
// a time, so I can print them out or do whatever else:
for (NSString *dish in mealDishesArray) {
NSLog(@"Iterating through 'mealDishesArray' now...");
NSLog(@"Current 'dish' is: %@", dish);
問題は、「ディナー」キーに到達したときに発生します。これは、2 つの配列値を持つ 2 つのキーを含むディクショナリです。では、そのコンテンツを Dictionary オブジェクトに読み込むにはどうすればよいでしょうか。より具体的には、「夕食」の内容を新しい辞書オブジェクトにロードするには、どの「init」メソッドを使用する必要がありますか?
私はこれを試しました - 動作しません:
// I put this inside the first fast-enum loop:
if ([mealTime isEqualToString: @"Dinner"]) {
// init new Dictionary object (declared previously):
dinnerDictionary = [[NSDictionary alloc] initWith ???];
「ディナー」キーの内容で初期化したいのですが、明らかに P リスト ファイルではないため、使用できません
initWithContentsOfFile: pathName
「ディナー」のキーと値の両方にアクセスできる他の init メソッドがどれかわかりません。「夕食」は辞書として構造化されていますが、現在は配列内にあり、辞書とは見なされないためです(私は思う...)
私は明らかにこれについて少し不明です。
それとも、このネストされたディナー ディクショナリを取得できるように、最初から P リストを別の方法で構造化する必要がありますか?
何か案は?