尝试在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输出我想获取tester.obj1.string3
答案 0 :(得分:0)
ATTTEst *tester=[dict objectForKey:test];
应该是
ATTTEst *tester=[dict objectForKey:@"test"];
在检索对象时,您已使用对象test
(而不是字符串@"test"
)作为键。我不这么认为
是故意的。
答案 1 :(得分:-1)
为了将它们存储到NSDictionary中,您不需要对它们进行编码。
只是做:
NSDictionary *dict = [NSDictionary dictionaryWithObjectsAndKeys:, attestObject,@"attestObject", attest2Object,@"atttest2" nil];
其中attestObject和attest2Object是您要存储的对象,字符串是其键。
这与编码无关......