相关疑难解决方法(0)

如何在NSUserDefaults中存储自定义对象

好吧,所以我一直在做一些戳,我意识到我的问题,但我不知道如何解决它.我已经创建了一个自定义类来保存一些数据.我为这个类制作了对象,我需要它们在会话之间持续.在我将所有信息都放入之前NSUserDefaults,但这不起作用.

-[NSUserDefaults setObject:forKey:]: Attempt to insert non-property value '<Player: 0x3b0cc90>' of class 'Player'.
Run Code Online (Sandbox Code Playgroud)

这是我将自定义类"Player"放入的错误消息NSUserDefaults.现在,我读过,显然NSUserDefaults只存储了某些类型的信息.那么我如何让我的对象进入NSUSerDefaults

我读到应该有一种方法来"编码"我的自定义对象,然后把它放进去,但我不知道如何实现它,帮助将不胜感激!谢谢!

****编辑****

好吧,所以我使用下面给出的代码(谢谢!),但我仍然有一些问题.基本上,代码崩溃了,我不知道为什么,因为它没有给出任何错误.也许我错过了一些基本的东西,我太累了,但我们会看到.这是我的Custom类"Player"的实现:

@interface Player : NSObject {
    NSString *name;
    NSNumber *life;
    //Log of player's life
}
//Getting functions, return the info
- (NSString *)name;
- (int)life;


- (id)init;

//These are the setters
- (void)setName:(NSString *)input; //string
- (void)setLife:(NSNumber *)input; //number    

@end
Run Code Online (Sandbox Code Playgroud)

实施档案:

#import "Player.h"
@implementation Player
- (id)init {
    if (self = [super init]) {
        [self setName:@"Player …
Run Code Online (Sandbox Code Playgroud)

iphone encoding objective-c nsuserdefaults ios

266
推荐指数
7
解决办法
13万
查看次数

尝试将非属性列表对象设置为NSUserDefaults

我以为我知道是什么导致了这个错误,但我似乎无法弄清楚我做错了什么.

这是我得到的完整错误消息:

Attempt to set a non-property-list object (
   "<BC_Person: 0x8f3c140>"
) as an NSUserDefaults value for key personDataArray

我有一个Person我认为符合NSCoding协议的类,我在这个类中有这两个方法:

- (void)encodeWithCoder:(NSCoder *)coder {
    [coder encodeObject:self.personsName forKey:@"BCPersonsName"];
    [coder encodeObject:self.personsBills forKey:@"BCPersonsBillsArray"];
}

- (id)initWithCoder:(NSCoder *)coder {
    self = [super init];
    if (self) {
        self.personsName = [coder decodeObjectForKey:@"BCPersonsName"];
        self.personsBills = [coder decodeObjectForKey:@"BCPersonsBillsArray"];
    }
    return self;
}
Run Code Online (Sandbox Code Playgroud)

在应用程序的某个时刻,NSStringBC_PersonClass设置中,我有一个DataSave类,我认为正在处理我的属性编码BC_PersonClass.这是我在DataSave课堂上使用的代码:

- (void)savePersonArrayData:(BC_Person *)personObject
{
   // NSLog(@"name of the person %@", personObject.personsName); …
Run Code Online (Sandbox Code Playgroud)

encoding objective-c nsuserdefaults ios

185
推荐指数
10
解决办法
14万
查看次数

标签 统计

encoding ×2

ios ×2

nsuserdefaults ×2

objective-c ×2

iphone ×1