2014-09-04 58 views
0

我知道他們已經對這個問題提出了很多問題,但我的情況有所不同。嘗試插入非屬性列表對象 - NSUserDefaults - 類屬性

我想要做的是在NSUserDefaults中保存一個「類屬性」。要創建「類屬性」我這樣做:

// MyClass.h 

    #import <Foundation/Foundation.h> 

    static NSString *userIndex; 

    @interface PlanGenerator : NSObject 

    + (void)setUserIndex:(NSString *)userIndexNew; 
    + (NSString *)userIndex; 

    @end 


// MyClass.m 

    #import "MyClass.h" 
    @implementation MyClass 

    + (void)setUserIndex:(NSString *)userIndexNew 
    {  
     userIndex = userIndexNew; 

     NSUserDefaults *userDefaults = [NSUserDefaults standardUserDefaults];  
     [userDefaults setObject:userDefaults forKey:@"UserIndex"]; 
     [userDefaults synchronize]; 
    } 

    + (NSString *)userIndex 
    { 
     return userIndex; 
    } 

    @end 

但是,當我想的setObject:userIndex出錯的應用程序崩潰:

attempt to insert non-property list object <NSUserDefaults: 0x109409e50> for key UserIndex' 

任何一個想法如何解決這一問題?

+1

不應該像「userIndex = userJahrgNeu;」 ?另外,您似乎在嘗試執行「UserDefaultsception」,這是故意的嗎? – EDUsta 2014-09-04 18:46:38

+0

我對此感到非常抱歉。那是因爲我編輯了一個真實項目的代碼並試圖使用通用變量名稱。我修好了,現在應該是正確的。 – Codey 2014-09-04 19:23:48

回答

1

你的代碼似乎有點混亂的例外聲稱使用關鍵UserJahrg而不是UserIndex,但問題是,你正試圖添加userDefaults本身:

NSUserDefaults *userDefaults = [NSUserDefaults standardUserDefaults];  
[userDefaults setObject:userDefaults forKey:@"UserIndex"]; 
//      ^^^^^^^^^^^^ 

你可能是指userIndex

NSUserDefaults *userDefaults = [NSUserDefaults standardUserDefaults];  
[userDefaults setObject:userIndex forKey:@"UserIndex"]; 
+0

謝謝,那是問題所在。我真的很遺憾看到這一點。再次,抱歉與變量名稱混淆。 – Codey 2014-09-04 19:25:12

+0

我的意思是我沒有看到它 – Codey 2014-09-04 19:35:01