我有一个NSMutablearray,它是一个多维数组
tblarry = [[NSMutableArray alloc]init];
for (int i=0; i<temp0.count; i++)
{
NSMutableDictionary *tempDicts = [[NSMutableDictionary alloc]init];
[tempDicts setObject:[temp0 objectAtIndex:i] forKey:@"UserId"];
[tempDicts setObject:[temp1 objectAtIndex:i] forKey:@"Name"];
[tblarry addObject:tempDicts];
}
NSSortDescriptor *sortDescriptor = [[NSSortDescriptor alloc] initWithKey:@"Name" ascending:YES];
[tblarry sortUsingDescriptors:[NSArray arrayWithObject:sortDescriptor]];
在上面的代码中,temp0
是带有一些用户ID的NSmutablearray
,temp1
是带有名称的NSmutablearray
。
我已将这两个数组添加到NSMutablearray
(tblarry
)并按名称排序。
现在我想更改子数组中第一个对象的值,其名称带有以下代码
[[[tblarry replaceObjectAtIndex:0] objectForKey:@"Name"] withObject:@"first name"];
但它显示错误
No visible @interface for 'NSMutableArray' declares the selector 'replaceObjectAtIndex:'
答案 0 :(得分:2)
您没有使用多维数组 - 您有一系列词典。检索字典,然后为Name
键设置新值。
NSMutableDictionary *userDictionary = [tblarry objectAtIndex:0]; //First user
[userDictionary setObject:@"first name" forKey:@"Name"];
答案 1 :(得分:1)
是的,您的实施不正确。 正确的方法是,
[tblarry replaceObjectAtIndex:[[tblarry objectAtIndex :0] objectForKey:@"Name"] withObject:@"first name"];
现在我告诉你它为什么不正确,
[[[tblarry replaceObjectAtIndex:0] objectForKey:@"Name"] withObject:@"first name"];
当您触发[[tblarry replaceObjectAtIndex:0] objectForKey:@"Name"]
时,这意味着您尝试访问tblarry中的字典,但您尝试替换ObjectAtIndex。你的语法出错了。只是你发生冲突。
如果你想在数组中保存字典,
NSDictionary *values = [NSDictionary dictionaryWithObjectsAndKeys:
[NSNumber numberWithInt:num], @"UserId",
[NSNumber numberWithInt:sender.tag], @"name",
nil];
[tblarry addObject:values];
While retrieve time ,
NSInteger firstValue = [[[tblarry objectAtIndex:0] objectForKey:@"UserId"] intValue];
NSInteger tagValue = [[[tblarry objectAtIndex:0] objectForKey:@"name"] intValue];