-1

试图在 NSDictionary 中存储值并检索它

对象

#import <Foundation/Foundation.h>
@class ATTTEstOBJ;

@interface ATTTEst : NSObject

@property (nonatomic, retain) NSString *string1;
@property (nonatomic, retain) NSString *string2;
@property (nonatomic, retain) ATTTEstOBJ *obj1;

@end


@interface ATTTEstOBJ : NSObject

@property (nonatomic, retain) NSString *string3;
@property (nonatomic, retain) NSString *string4;
@property (nonatomic, retain) NSString *array1;

@end

我知道它需要正确编码才能保存和检索值。但在这种情况下,它是一个复合对象,我不知道如何处理它。

- (void) encodeWithCoder: (NSCoder *)coder

所以 TLDR ,如何将复合值保存到字典中并检索回来

我想存储ATTTest到字典中并取回它。

编辑:详细说明

ATTTEst *test=[[ATTTEst alloc]init];
test.string1=@"a";
test.string2=@"b";


ATTTEstOBJ *obj=[[ATTTEstOBJ alloc]init];
obj.string3=@"c";
obj.string4=@"d";

test.obj1=obj;



NSMutableDictionary *dict=[[NSMutableDictionary alloc]initWithCapacity:3];

[dict setObject:test forKey:@"test"];
NSLog(@"%@",dict);

ATTTEst *tester=[dict objectForKey:test];
NSLog(@"%@",tester.obj1.string3);

IT 显示 null.as 输出我想将值作为 c 获取tester.obj1.string3

4

2 回答 2

0
ATTTEst *tester=[dict objectForKey:test];

应该

ATTTEst *tester=[dict objectForKey:@"test"];

检索对象时,您已使用对象test(而不是字符串)作为键。@"test"我不认为那是故意的。

于 2013-07-02T07:04:49.787 回答
-1

为了将它们存储到 NSDictionary 中,您不需要对它们进行编码。

做就是了:

NSDictionary *dict = [NSDictionary dictionaryWithObjectsAndKeys:, attestObject,@"attestObject", attest2Object,@"atttest2" nil];

其中 attestObject 和 attest2Object 是您要存储的对象,字符串是它们的键。

这与编码无关...

于 2013-07-02T06:48:03.530 回答