2013-02-10 66 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;