Search code examples
objective-carraysxcodensmutablearrayelement

Calling an element from an array and assigning it to a variable?


could someone please tell me how to call an element from an array and assigning it to a variable?

In my viewdidload I create a random array of numbers.

- (void)viewDidLoad {
    int n = 40;
    NSMutableArray *numbers = [NSMutableArray array];
    for (int i = 1; i <= n; i++) {
        [numbers addObject:[NSNumber numberWithInt:i]];
    }
    NSMutableArray *result = [NSMutableArray array];
    while ([numbers count] > 0) {
        int r = arc4random() % [numbers count];
        NSNumber *randomElement = [numbers objectAtIndex:r];
        [result addObject:randomElement];
        [numbers removeObjectAtIndex:r];
    }
    NSLog(@"%@", result);
    NSLog (@"The 4th integer is: %@", [result objectAtIndex:3]);
}

In another section I would like to call those values. For example

-(void)nextpiece{
    countnumber=2;
    count=[result objectAtIndex:countnumber];
}

with countnumber and count being int. The problem is it doesn't recognize the result array. Error is "Use of undeclared identifier 'result'" Could someone provide a solution? Thank you very much


Solution

  • Problem is because result is a local variable inside viewDidLoad and you can only use it inside viewDidLoad. If you want a variable which can be used in both viewDidLoad and nextpiece. I suggest to make result as a property of your class.

    For example.

    @interface YourViewController ()
    
    @property (nonatomic, strong) NSMutableArray* result;
    
    @end
    
    @implementation YourViewController
    
    - (void)viewDidLoad {
      int n = 40;
      NSMutableArray *numbers = [NSMutableArray array];
      for (int i = 1; i <= n; i++) {
        [numbers addObject:[NSNumber numberWithInt:i]];
      }
      _result = [NSMutableArray array];
      while ([numbers count] > 0) {
        int r = arc4random() % [numbers count];
        NSNumber *randomElement = [numbers objectAtIndex:r];
        [_result addObject:randomElement];
        [numbers removeObjectAtIndex:r];
      }
      NSLog(@"%@", _result);
      NSLog (@"The 4th integer is: %@", [_result objectAtIndex:3]);
    }
    
    -(void)nextpiece{
      int countnumber = 2;
      NSNumber *count = [_result objectAtIndex:countnumber];
    }
    
    @end