Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/iphone/35.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Iphone iOS向NSDictionary添加对象并访问NSDictionary中的对象_Iphone_Ios_Objective C_Nsdictionary_Nsmutabledictionary - Fatal编程技术网

Iphone iOS向NSDictionary添加对象并访问NSDictionary中的对象

Iphone iOS向NSDictionary添加对象并访问NSDictionary中的对象,iphone,ios,objective-c,nsdictionary,nsmutabledictionary,Iphone,Ios,Objective C,Nsdictionary,Nsmutabledictionary,我想将对象添加到nsdictionary并访问这些对象或修改对象中的属性,但在获取它们时遇到困难 例如: ObjectClass: -(id)init { self = [super init]; if (self) { self.firstName = @""; self.lastName = @""; } return self; } mainClass: ObjectClass *myObjec

我想将对象添加到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>
ObjectClass:
-(id)init
{
self=[super init];
如果(自我)
{
self.firstName=@”;
self.lastName=@”;
}
回归自我;
}
主要类别:
ObjectClass*myObject=[ObjectClass allo]init];
NSMutableDictionary*ListofClient=[NSMutableDictionary allo]init];
[self.listofClient setObject:myObject-forKey:@“firstClient”];
(lldb)采购订单[客户价值清单如下:@“第一客户”]
$5=0x0683e140
(lldb)po[_testdicvalueforkey:@“firstClient.myObject”]
$6=0x00000000
例如,如何访问firstClient的名字


非常感谢您的帮助

首先,您的
客户端列表
局部变量和属性出现命名冲突。试着这样做:

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);
这将完成初始化字典和对象,并将对象放入字典中。然后,您可以通过以下方式访问该项目:

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);
我非常想念这个:


[ListofClient valueForKeyPath:@“firstClient.lastName”]

在您的示例中,如何在同一字典中添加第二个客户端?创建另一个对象,例如
obj2
。然后执行相同的操作:
self.listofClient[@“secondClient”]=obj2
。这有用吗?如果你能更全面地描述你想做什么,也许会更有帮助。这种设置似乎有点尴尬,因此可能有更好的方法来实现您的最终目标。