Опит за вмъкване на обект от списък без свойства - 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'

Някой има ли идея как да поправя това?


person Codey    schedule 04.09.2014    source източник
comment
Не трябва ли да е като userIndex = userJahrgNeu; ? Освен това изглежда, че се опитвате да направите UserDefaultsception, това умишлено ли е?   -  person EDUsta    schedule 04.09.2014
comment
Много съжалявам за това объркване. Това е така, защото редактирах код от реален проект и се опитах да използвам общи имена на променливи. Поправих го и сега трябва да е правилно.   -  person Codey    schedule 04.09.2014


Отговори (1)


Вашият код изглежда малко объркващ, тъй като изключението твърди, че използва ключ UserJahrg, а не UserIndex, но проблемът е, че се опитвате да добавите userDefaults към себе си:

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

Вероятно имаш предвид userIndex:

NSUserDefaults *userDefaults = [NSUserDefaults standardUserDefaults];    
[userDefaults setObject:userIndex forKey:@"UserIndex"];
person trojanfoe    schedule 04.09.2014
comment
Благодаря, това беше проблема. Колко жалко, че видях това. И отново, съжалявам за объркването с имената на променливите. - person Codey; 04.09.2014
comment
Искам да кажа, че не го видях - person Codey; 04.09.2014