2011-08-31 29 views
0

在啓動時出現的窗口中,NSUserDefaults與初始窗口非常協調。如果我打開相同的筆尖文件重新編程與此代碼:以編程方式打開筆尖時,NSUserDefaults不起作用

NSWindowController *controller = [[NSWindowController alloc] initWithWindowNibName:@"MainMenu"]; 
[controller showWindow:self]; 

它未能得到NSUserDefaults的。我得到(null)的值。我讀了默認這樣的:
[[NSUserDefaults standardUserDefaults] valueForKey:@"myKey"];

和寫入他們是這樣的:
[[NSUserDefaults standardUserDefaults] setValue:@"myValue" forKey:@"myKey"];

我在做什麼錯?一旦設置了值,我重新啓動應用程序,重新打開編程。加載的筆尖窗口失敗!

我打開這個程序打開的窗口,從類的NIB文件掛鉤 - >用戶按下按鈕,第二個窗口打開!

+0

您的[NSUserDefaults standardUserDefaults]是否返回null或您的valueForKey調用? –

+0

valueForKey調用返回null,我想,當我NSLog()[NSUserDefaults standardUserDefaults],我得到的地址,這是在兩個窗口相同! – Silicone

+0

如果它適用於IB實例化的窗口,但不是以編程方式創建的窗口,那麼在IB中可能存在一些連接,導致您無法正確重新連接到控制器。我懷疑NSUserDefaults存在問題。 – Flyingdiver

回答

0

我現在自己發現了這個問題。我在.h中定義了一個NSUserDefaults變量,所以我可以在整個.m文件中訪問它。我正在初始化它,mainDefaults = [NSUserDefaults standardUserDefaults],在- (void)applicationDidFinishLaunching:(NSNotification *)aNotification{},這隻在應用程序啓動時才被調用!當我打開一個新窗口時,這當然不是必需的!

無論如何,感謝您的幫助。