0

だから私は配列を持つ辞書に辞書を持っています。2 番目の辞書にある配列に追加しようとしています。

 [mealInfo setObject:[[NSMutableDictionary alloc]init] forKey:@"breakfast"];
 [[mealInfo objectForKey:@"breakfast"] setObject:[[NSMutableArray alloc] init] forKey:@"name"];
    [[mealInfo objectForKey:@"breakfast"] setObject:[[NSMutableArray alloc] init] forKey:@"detail"];
    [[mealInfo objectForKey:@"breakfast"] setObject:[[NSMutableArray alloc] init] forKey:@"ndb"];
    [[mealInfo objectForKey:@"breakfast"] setObject:[[NSMutableArray alloc] init] forKey:@"id"];
    [[mealInfo objectForKey:@"breakfast"] setObject:[[NSMutableArray alloc] init] forKey:@"alias"];

作成は、配列に複数の要素を追加するだけで機能しているようです.SIGABRTエラーが発生する場所です

私はそのように追加します

[[[initMealInfo->mealInfo objectForKey:@"breakfast"] objectForKey:@"name"] addObject:[food_prop objectForKey:@"description"]];

私は何か間違ったことをしていることを知っています。

4

1 に答える 1

3

まず、ARCを使用していますか?そうでなければ、あなたは多くの問題を抱えています。


最小知識の原則とデメテルの法則をよく読んでください。

このような構造をより直感的にしています:

    NSMutableDictionary *mealInfo = [[NSMutableDictionary alloc] init];

    NSMutableDictionary *breakfast = [[NSMutableDictionary alloc] init];
    [breakfast setObject:[[NSMutableArray alloc] init] forKey:@"name"];
    [breakfast setObject:[[NSMutableArray alloc] init] forKey:@"detail"];
    [breakfast setObject:[[NSMutableArray alloc] init] forKey:@"ndb"];
    [breakfast setObject:[[NSMutableArray alloc] init] forKey:@"id"];
    [breakfast setObject:[[NSMutableArray alloc] init] forKey:@"alias"];

    [mealInfo setObject:breakfast forKey:@"breakfast"];

次に、情報を入力して関数にラップするときに、少し分解してみてください

-(void) addMealName:(NSString*) name forMeal:(NSString*) meal 
{
    NSMutableDictionary *meals = [mealInfo objectForKey:meal];
    NSMutableArray *mealNames = [breakfast objectForKey:@"name"];
    [mealNames addObject:name];
    [meals setObject:breakfastNames forKey:@"name"];
    [mealInfo breakfast forKey:meal];
}

そして電話する

NSString *newMealName = [food_prop objectForKey:@"description"];
[initMealInfo addMealName:newMealName forMeal:@"breakfast"];
于 2012-06-12T16:23:21.507 に答える