2009-04-23 36 views
28

Tôi có hai quy trình sau được xác định trong AppDelegate của tôi. saveSettings và loadSettings. Tôi đang gọi thủ tục loadSettings của tôi trong phương thức AppDidFinishLaunching, và tôi đang gọi thủ tục saveSettings trong khung nhìn cài đặt của tôi, một khi nút lưu được nhấn.iPhone SDK - cài đặt tải/lưu

Cả hai phương pháp dường như được gọi vào đúng thời điểm, đúng số lần (một lần) và sử dụng dữ liệu chính xác. đối tượng cài đặt của tôi nhận được dữ liệu phù hợp, nhưng dữ liệu dường như không thực sự tiết kiệm. Khi tôi chạy mã tải, các biến kết quả của tôi sẽ trở lại trống (không phải là nil).

Tôi đã thử đặt cùng một mã tải ở một chế độ xem khác và nó hoạt động tốt, nhưng vì một lý do nào đó, tôi không nhận được kết quả trong appDelegate của mình.

Mọi trợ giúp sẽ được đánh giá cao.

- (void)applicationDidFinishLaunching:(UIApplication *)application {  
     [window addSubview:navigationController.view]; 
     [window makeKeyAndVisible]; 
     [self loadSettings]; 
     [self setDefaults]; 
} 

-(void)loadSettings{ 
    NSUserDefaults *prefs = [NSUserDefaults standardUserDefaults]; 
    settings.masterLocation = [prefs objectForKey:@"masterLocation"]; 
    settings.masterPort = [prefs objectForKey:@"masterPort"]; 
    settings.userName = [prefs objectForKey:@"userName"]; 
    settings.passWord = [prefs objectForKey:@"passWord"]; 
    settings.autoLogin=[prefs objectForKey:@"autoLogin"]; 

    if (settings.autoLogin == nil) 
     [email protected]"N"; 


} 

-(void)saveSettings:(SharedData *)d{ 
    settings=d; 

    NSUserDefaults *prefs = [NSUserDefaults standardUserDefaults]; 
    [prefs setObject:settings.masterLocation forKey:@"masterLocation"]; 
    [prefs setObject:settings.masterPort forKey:@"masterPort"]; 
    [prefs setObject:settings.userName forKey:@"userName"]; 
    [prefs setObject:settings.passWord forKey:@"passWord"]; 
    [prefs setObject:settings.autoLogin forKey:@"autoLogin"]; 
} 

Trả lời

29

Doh.

Trong saveSettings, tôi đã thiếu [prefs synchronize] của mình;

+0

Cảm ơn Tự Học Badge. – Dutchie432

+0

Cảm ơn điều đó thực sự đã giúp! – Khattab

+1

"đồng bộ hóa" thay vì "đồng bộ hóa" – Manni

1

để làm cho nó mẫu:

//Writing 
[[NSUserDefaults standardUserDefaults] setInteger:1 forKey:@"anInt"]; 
[[NSUserDefaults standardUserDefaults] setDouble:1.2 forKey:@"aDouble"]; 
[[NSUserDefaults standardUserDefaults] setString:@"aString" forKey:@"aString"]; 
[[NSUserDefaults standardUserDefaults] synchronize]; 

//Reading: 

int i = [[NSUserDefaults standardUserDefaults] integerForKey:@"anInt"] 
Các vấn đề liên quan