在NSUserDefaults中存储SegmentedControl段状态

时间:2013-02-10 09:45:07

标签: objective-c nsuserdefaults

我正在尝试将SegmentedControl的细分索引存储在NSUserDefaults中。

以下是加载首选项和首选项“保存”按钮的代码。

- (void)viewDidLoad
{
   [super viewDidLoad];
   // Get the stored data before the view loads
   NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];

   int yPrefSegment = [defaults integerForKey:@"yPref"];

   prefYsegmentedControl.selectedSegmentIndex = yPrefSegment;

}

- (IBAction)savePrefButton:(id)sender
{

   int yPref = [[prefYsegmentedControl.selectedSegmentIndex] integerValue];

   NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
   [defaults synchronize];

   NSLog(@"Data saved");
}

我在该行(savePrefButton)中收到错误:

int yPref = [[prefYsegmentedControl.selectedSegmentIndex] integerValue]; 

错误是:Expected Identifier

我迷失在这里。不知道它在说什么。

谢谢。

2 个答案:

答案 0 :(得分:0)

您有一个语法错误和两个语义错误。

语法错误:

[prefYsegmentedControl.selectedSegmentIndex]

选择方法调用或点表示法之一来访问属性。使用

[prefYsegmentedControl selectedSegmentIndex]

prefYsegmentedControl.selectedSegmentIndex

第一个语义错误:

prefYsegmentedControl.selectedSegmentIndex

已经是整数。无需致电integerValue。 (无论如何,你不能向基本类型发送消息。这不是Smalltalk。)

第二个语义错误:您实际上并未将索引存储在NSUserDefaults中。插入

[defaults setInteger:yPref forKey:@"yPref"];

在同步用户默认值之前。

答案 1 :(得分:0)

您正在将该属性视为对象。不是。只需使用

int yPref = prefYSegmentedControl.selectedSegmentIndex;