title: How do I properly create static NSArrays full of NSNumbers in Objective-C (Cocoa)?
body: <p>Why is it that in the following code, I can not just simply make a static array of NSNumbers? I would just use C arrays and ints, but those cannot be copied and as you can see in init(), I have to copy the array to another one. The error I recieve is "Initializer element is not constant." It's very confusing; I'm not even sure what that means considering I don't have the const keyword anywhere in there.</p>
  
  <p>Also, as a sidenote, the getNextIngredient method gives me the error "cannot use object as a parameter to a method" and "incompatible types in return", but I'm not sure why. </p>
  
  <p>Here is the code:</p>
  
  <pre><code>// 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];
  }
  </code></pre>