Защо в следния код не мога просто да направя статичен масив от NSNumbers? Просто бих използвал C масиви и int, но те не могат да бъдат копирани и както можете да видите в init(), трябва да копирам масива в друг. Грешката, която получавам, е „Елементът на инициализатора не е постоянен“. Много е объркващо; Дори не съм сигурен какво означава това, като се има предвид, че нямам ключовата дума const никъде там.
Освен това, като странична бележка, методът getNextIngredient ми дава грешката „не може да използва обект като параметър към метод“ и „несъвместими типове в замяна“, но не съм сигурен защо.
Ето кода:
// 1 = TOMATO
// 2 = LETTUCE
// 3 = CHEESE
// 4 = HAM
#import "Recipe.h"
@implementation Recipe
// List of hardcoded recipes
static NSArray *basicHam = [[NSArray alloc] initWithObjects:[[NSNumber alloc] numberwithInt:1], [[NSNumber alloc] numberwithInt:2], [[NSNumber alloc] numberWithInt:3], [[NSNumber alloc] numberwithInt:4]];
// Upon creation, check the name parameter that was passed in and set the current recipe to that particular array.
// Then, set nextIngredient to be the first ingredient of that recipe, so that Game can check it.
-(id) initWithName: (NSString*)name {
self = [super init];
indexOfNext = 0;
if (self) {
if ([name isEqualToString: @"Basic Ham"]) {
currRecipe = [NSArray arrayWithArray: basicHam];
}
}
}
-(NSNumber) getNextIngredient {
return [currRecipe objectAtIndex:indexOfNext];
}