gpt4 book ai didi

ios - 如何在 Objective-C 的 NSUserDefaults 中存储我的客户 NSMutableArray?

转载 作者:行者123 更新时间:2023-11-28 21:15:47 25 4
gpt4 key购买 nike

我正在尝试将我的客户数据存储到 NSUserDefaults 中。客户数据如下:

AvinLightInfo.h

#import <Foundation/Foundation.h>
@interface AvinLightInfo : NSObject

@property (nonatomic)uint16_t Address;
@property (strong,nonatomic)NSString* name;
@property (strong,nonatomic)NSMutableArray* ColorTempInfo;
@property (strong,nonatomic)NSMutableArray* BrightnessInfo;

@end

view.m

NSMutableArray *AvinLightDataBase = [[NSMutableArray alloc] init];

AvinLightInfo *Avinlightinfo = [[AvinLightInfo alloc] init];
Avinlightinfo.Address = CFSwapInt16(0x3711);
Avinlightinfo.name = @"TEST";

Avinlightinfo.ColorTempInfo = [[NSMutableArray alloc] init];
Avinlightinfo.BrightnessInfo = [[NSMutableArray alloc] init];
NSNumber* defaultValue = [NSNumber numberWithInt:200];
for(int j = 0 ; j < 4 ; j++){
[Avinlightinfo.ColorTempInfo addObject:defaultValue];
[Avinlightinfo.BrightnessInfo addObject:defaultValue];
}
[AvinLightDataBase addObject:Avinlightinfo];

我尝试使用以下代码将上述数据存储在NSUserDefaults中。

[[NSUserDefaults standardUserDefaults] setObject:AvinLightDataBase forKey:@"AvinLightDataBase"];
[[NSUserDefaults standardUserDefaults] synchronize];

但它崩溃并显示以下错误日志:

2016-12-27 16:35:23.491723 MESH[2458:992363] [User Defaults] Attempt to set a non-property-list object (
"<AvinLightInfo: 0x1702414a0>"
) as an NSUserDefaults/CFPreferences value for key AvinLightDataBase
2016-12-27 16:35:23.492929 MESH[2458:992363] *** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: 'Attempt to insert non-property list object (
"<AvinLightInfo: 0x1702414a0>"
) for key AvinLightDataBase'

如何在 Objective-CNSUserDefaults 中存储我的客户 NSMutableArray

------------------------编辑-------------------- ----------

我也试试下面的方法:

NSData *data = [NSKeyedArchiver archivedDataWithRootObject:AvinLightDataBase];
NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
[defaults setObject:data forKey:@"light"];
[defaults synchronize];

但是它崩溃了,错误日志是:

-[AvinLightInfo encodeWithCoder:]: unrecognized selector sent to instance 0x17405c8c0
2016-12-27 17:20:54.203510 MESH[2481:998134] *** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[AvinLightInfo encodeWithCoder:]: unrecognized selector sent to instance 0x17405c8c0'
*** First throw call stack:

最佳答案

您可以通过以下方式存储自定义对象的数组

NSData *data = [NSKeyedArchiver archivedDataWithRootObject:yourArray];
NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
[defaults setObject:data forKey:@"yourKey"];


NSArray *array= [NSKeyedUnarchiver unarchiveObjectWithData:[defaults objectForKey:@"yourKey"];

有关更多详细信息,您可以按照本教程进行操作 Archiving Objective-C Objects with NSCoding

关于ios - 如何在 Objective-C 的 NSUserDefaults 中存储我的客户 NSMutableArray?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41341709/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com