2013-03-06 49 views
0

我想将文本字段中的用户输入数据存储到对象的NSNumber变量中。根据我的日志,价值存储很好,一切。访问一个对象的NSNumber值当大于一个数字时抛出错误的访问异常

问题是当用户通过导航改变视图,然后返回。当我尝试访问NSNumber值时,出现访问错误。奇怪的是,如果我存储的值只有1位数(0-9),我不会崩溃。

一些代码...

//conversion then storage of the NSNumber value into the object 
    NSNumberFormatter *formatter = [[NSNumberFormatter alloc] init]; 
    [formatter setNumberStyle:NSNumberFormatterNoStyle]; 
    NSNumber *num = [formatter numberFromString:textField.text]; 
    _options.unitsPerCase = num; 
    NSLog(@"num: %@",num); 
    break; 


    //user leaves screen i reload tabledata and try to 
    //populate with previously saved NSNumber 
    case NumberTextFieldSection: 
    { 
     switch (indexPath.row) 
     { 
      case NumberTextFieldRow: 
      { 
       cell.valueTextField.text = [_options.unitsPerCase stringValue]; 
       break; 
      } 

      default: 
       break; 
     } 
    } 
+0

我不知道,但尝试使用'self.options',而不是'_options'。这将使您的访问器工作,并将保留。 – 2013-03-06 18:43:59

+0

你上面试过了吗? – 2013-03-06 18:51:51

+0

isnt self.options和_options相同,如果你通过'@synthesize options = _options;'来合成属性?请记住,在选项类的其他变量中存储值工作得很好。它只有这个导致错误的NSNumber。 – JMD 2013-03-06 18:52:53

回答

3

我怀疑unitsPerCase属性检查它是否被宣告强或保留在myOptions类。

使用

@property (nonatomic, strong) NSNumber *unitsPerCase; 
+0

它被设置为分配,我改变它保留和它的工作。 – JMD 2013-03-06 19:33:39

+0

然后使其成为接受的答案。快乐编码:) – 2013-03-06 19:34:40

相关问题