尝试插入非属性列表对象 - NSUserDefaults - 类属性

时间:2014-09-04 18:42:43

标签: objective-c xcode properties 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 个答案:

答案 0 :(得分:1)

您的代码似乎有些令人困惑,因为异常声称使用密钥UserJahrg而不是UserIndex,但问题是您尝试将userDefaults添加到自身:

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

你可能意味着userIndex

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