2014-09-04 83 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

相关问题