2013-08-29 116 views
0

我想将对象添加到nsdictionary并访问这些对象或修改对象中的属性,但我无法获取它们。iOS将对象添加到NSDictionary并访问NSDictionary中的对象

例如:

ObjectClass: 

-(id)init 
{ 
    self = [super init]; 
    if (self) 
    { 
     self.firstName = @""; 
     self.lastName = @""; 
    } 
    return self; 
} 


    mainClass: 

    ObjectClass *myObject = [ObjectClass allo] init]; 

    NSMutableDictionary *listOfClients = [NSMutableDictionary allo] init]; 

    [self.listOfClients setObject:myObject forKey:@"firstClient"]; 

    (lldb) po [listOfClients valueForKey:@"firstClient"] 
    $5 = 0x0683e140 <myObject: 0x683e140> 
    (lldb) po [_testDic valueForKey:@"firstClient.myObject"] 
    $6 = 0x00000000 <nil> 

如何访问例如firstClient的的firstName?

我真的很感谢你的帮助

回答

1

首先,你必须与你的listOfClients局部变量,你的财产命名冲突。试试这样:

self.listOfClients = [[NSMutableDictionary alloc] init]; 

ObjectClass *myObject = [[ObjectClass alloc] init]; 
myObject.firstName = @"John"; 
myObject.lastName = @"Smith"; 

self.listOfClients[@"firstClient"] = myObject; 

这将完成初始化字典和对象并将对象放在字典中。再后来,你可以访问该项目是这样的:

ObjectClass *obj = (ObjectClass *)self.listOfClients[@"firstClient"]; 
NSLog(@"Name: %@ %@", obj.firstName, obj.lastName); 
+0

在你的例子中如何添加一个secondClient在同一个字典? – HelenaM

+0

创建另一个对象,比如'obj2'。然后做同样的事情:'self.listOfClients [@“secondClient”] = obj2'。这有帮助吗?如果你能够更全面地描述你想要做的事,也许会更有帮助。这种设置看起来有点尴尬,所以可能有更好的方法来实现你的最终目标。 – Eric

0

我完全错过这样的:

[listOfClients valueForKeyPath:@ “firstClient.lastName”];

相关问题