0

ポップアップするコードにエラーはなく、アプリがシミュレーターに読み込まれると、完全に空白になります。PList データが配列に正しく取り込まれていないことが問題である可能性があると思いますが、ヘッダー/フッターでさえ表示されないのでわかりません。

以下は Plist の 1 つの例です (合計 4 つの plist があり、すべて同じ構造で、異なるオブジェクトに割り当てられているだけです)。

オブジェクトの 1 つを配列に割り当て、それらの配列の一部を別の配列に配置して、サムネイルとラベルの名前を追跡するコードを次に示します。

//BEGIN INGREDIENT ITEM DATA
    NSString *ingredientItemsPath = [[NSBundle mainBundle] pathForResource:@"IngredientList" ofType:@"plist"];
    NSMutableArray *ingredientItemsArray = [[NSMutableArray alloc] initWithContentsOfFile:ingredientItemsPath];
    /*NSString *ingredientItemsPath = [[NSBundle mainBundle] pathForResource:@"ingredientList" ofType:@"plist"];
    NSDictionary *ingredientItemsDict = [[NSDictionary alloc] initWithContentsOfFile:ingredientItemsPath];
    NSArray *ingredientItemsArray = [NSArray arrayWithArray:[ingredientItemsDict objectForKey:@"Root"]];*/
    NSMutableArray *cCalcIngredientObjects = [[NSMutableArray alloc] init];
    for (int index=0; index < ingredientItemsArray.count; index++)
    {
        CCalcIngredients* ingredient = [[CCalcIngredients alloc] init]; // This is your object
        NSDictionary* ingredientDict = (NSDictionary*)ingredientItemsArray[index];
        ingredient.name = ingredientDict[@"name"];
        ingredient.thumbnail = ingredientDict[@"thumbnail"];
        NSDictionary* ingredientNutritionDict = (NSDictionary*)ingredientDict[@"nutrition"];
        ingredient.calories = ingredientNutritionDict[@"calories"];
        ingredient.totalFat = ingredientNutritionDict[@"totalFat"];
        ingredient.saturatedFat = ingredientNutritionDict[@"saturatedFat"];
        ingredient.transFat = ingredientNutritionDict[@"transFat"];
        ingredient.cholesterol = ingredientNutritionDict[@"cholesterol"];
        ingredient.sodium = ingredientNutritionDict[@"sodium"];
        ingredient.totalCarbs = ingredientNutritionDict[@"totalCarbs"];
        ingredient.dietaryFiber = ingredientNutritionDict[@"dietaryFiber"];
        ingredient.proteins = ingredientNutritionDict[@"proteins"];
        [cCalcIngredientObjects addObject:ingredient];
    }
    //END INGREDIENT ITEM DATA

    NSLog(@"The ingredient items are %@", cCalcIngredientObjects);

    //array of photos
    self.photos = [[NSMutableArray alloc] init];
    for(CCalcMeals* item in cCalcMenuObjects){
        [self.photos addObject:item.thumbnail];
    }
    for(CCalcMeat* meat in cCalcMeatObjects){
        [self.photos addObject:meat.thumbnail];
    }
    for(CCalcSalsa* salsa in cCalcSalsaObjects){
        [self.photos addObject:salsa.thumbnail];
    }
    for(CCalcIngredients* ingredient in cCalcIngredientObjects){
        [self.photos addObject:ingredient.thumbnail];
    }
    NSLog(@"photos %@", self.photos);

作成したすべての配列に対して実行すると、NSLog は次のように出力します。

これが空白の黒いシミュレーター画面にビルドされる理由と、Plist データで何が起こっているのか、正しくビルドされているかどうかを理解しようとしています。

4

1 に答える 1

0

コードをいじってみると、ルート情報が実際にはディクショナリであるにもかかわらず、Plist から情報を配列として取り出そうとしていることがわかりました。助けとヒントをありがとう!

于 2014-01-31T19:12:33.233 に答える