2013-02-10 80 views
0

我正试图在NSUserDefaults中存储SegmentedControl的段索引。在NSUserDefaults中存储SegmentedControl段状态

以下是加载首选项和首选项'SAVE'按钮的代码。

- (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

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

谢谢。

回答

0

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

的语法错误:

[prefYsegmentedControl.selectedSegmentIndex] 

选择方法调用或点符号用于访问属性之一。二者必选其一

[prefYsegmentedControl selectedSegmentIndex] 

prefYsegmentedControl.selectedSegmentIndex 

第一个语义错误:

prefYsegmentedControl.selectedSegmentIndex 

已经是整数。无需拨打integerValue就可以了。 (无论如何你都不能发送消息到原始类型,这不是Smalltalk。)

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

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

在您同步用户默认值之前。

+0

感谢H2CO3和ashevin。你们用不同的方式回答了我的问题。这是行得通的。 – mstace 2013-02-10 10:31:18

0

您正在对待该属性,就好像它是一个对象。不是。只需使用

int yPref = prefYSegmentedControl.selectedSegmentIndex;