2013-07-02 49 views
-1

在NSDictionary中尝试存储值和检索的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 

我知道它需要被正确编码保存和检索values.but在这种情况下,一个复合对象,我不知道如何处理它。

- (void) encodeWithCoder: (NSCoder *)coder 

所以TLDR,如何复合值保存到字典和检索回

我想存储ATTTest成字典和检索回来。

编辑:详细解释

ATTTEst *test=[[ATTTEst alloc]init]; 
[email protected]"a"; 
[email protected]"b"; 


ATTTEstOBJ *obj=[[ATTTEstOBJ alloc]init]; 
[email protected]"c"; 
[email protected]"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

+2

它与NSDictionary有什么关系?你是否试图将它保存到一个文件? –

+0

在编码器方法中对字符串1,字符串2,字符串3,字符串4,字符串1进行编码,并使用您编码它们的相同密钥进行解码。 – everconfusedGuy

+0

@AviTsadok:更新了问题 –

回答

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

应该

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

检索对象时,你已经使用的对象test(而不是字符串@"test")为重点。我不认为 是故意的。

-1

为了它们存储到NSDictionary中,您不需要编码他们。

只要做到:

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

凡attestObject和attest2Object是要存储的对象,字符串是钥匙。

这有什么好做的编码...