1

我有一个 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]];

在上面的代码中,temp0NSmutablearray带有一些用户标识的,而temp1NSmutablearray带有名称的。

我已将这两个数组添加到NSMutablearray( tblarry) 并按名称排序。

现在我想用下面的代码改变子数组中第一个对象的值

[[[tblarry replaceObjectAtIndex:0] objectForKey:@"Name"] withObject:@"first name"];

但它显示了错误

No visible @interface for 'NSMutableArray' declares the selector 'replaceObjectAtIndex:'

4

2 回答 2

2

您没有使用多维数组 - 您有一个字典数组。检索字典,然后为Name键设置一个新值。

NSMutableDictionary *userDictionary = [tblarry objectAtIndex:0]; //First user
[userDictionary setObject:@"first name" forKey:@"Name"];
于 2013-10-03T11:45:57.693 回答
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];
于 2013-10-03T11:47:01.000 回答