0

i have integer data, stored in NSUserDefaults, there is my code:

- (IBAction)addButton:(id)sender {
      NSInteger oldValue = [[NSUserDefaults standardUserDefaults] integerForKey:@"myValue"];

    NSString *string1=[addTextField text];
    int add = [string1 floatValue];  
    int new = globalCalories;
    int old=oldValue;

    if(recomended.text==[NSString stringWithFormat:@"%i", oldValue]){
        **self.day = (int)roundf(old-add);
        dayLeft.text=[NSString stringWithFormat:@"%d", oldValue-add];
    }**

    else
    {
        self.day=(int)roundf(new-add);
        dayLeft.text=[NSString stringWithFormat:@"%d", day];
    }
}

I copied all of button action code, just in case, but i did mark with bold strings of code, that appear to not work. So, it suppose to do mathematical operations with stored data (oldValue), but when i launch programs, it dosnt, in fact, it does, but instead of valid value program "think" that oldValue is 0 (instead of valid value).

So, when it contain, for example, number 2000, and I launch program and enter in text field 500, it suppose to be 1500 (2000-500), but it shows -500.

Wouter Dorgelo
  • 11,770
  • 11
  • 62
  • 80
Necrosoft
  • 9
  • 1
  • 4
  • Check this question: http://stackoverflow.com/questions/4855771/cannot-set-nsuserdefaults-field – Isaac Feb 26 '12 at 13:36

2 Answers2

1

You can convert recommended.text to integer by using this:

int recommendedValue = [recommended.text intValue];

then compare the numbers.

MattAllegro
  • 6,455
  • 5
  • 45
  • 52
Diana
  • 11
  • 2
0

The problem is that == compared the address es of the NSString and not their values (see many SO questions). To compare strings use the isEqualToString: method.

However in this case it would be even better to compare the numbers ie convert recomended.text to the number and use a intValue method on dayLeft.

mmmmmm
  • 32,227
  • 27
  • 88
  • 117