2013-08-29 145 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」];

相關問題