Objective c 在NSUserDefaults中存储SegmentedControl段状态

Objective c 在NSUserDefaults中存储SegmentedControl段状态,objective-c,nsuserdefaults,Objective C,Nsuserdefaults,我正在尝试将SegmentedControl的段索引存储在NSUserDefaults中 下面是加载首选项和首选项“保存”按钮的代码 - (void)viewDidLoad { [super viewDidLoad]; // Get the stored data before the view loads NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults]; int yPrefSegment

我正在尝试将
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
中)发现一个错误:

错误为:
预期标识符

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


谢谢。

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

语法错误:

[prefYsegmentedControl.selectedSegmentIndex]
选择访问属性的方法调用或点符号之一。使用其中一个

[prefYsegmentedControl selectedSegmentIndex]

第一个语义错误:

prefYsegmentedControl.selectedSegmentIndex
已是一个整数。无需对其调用
integerValue
。(无论如何,您不能向基本类型发送消息。这不是Smalltalk。)

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

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

在同步用户默认设置之前。

将属性视为对象。不是。只用

int yPref = prefYSegmentedControl.selectedSegmentIndex;

谢谢H2CO3和ashevin。你们用不同的方式回答了我的问题。这是有效的。
[defaults setInteger:yPref forKey:@"yPref"];
int yPref = prefYSegmentedControl.selectedSegmentIndex;