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]];

上記のコードでtemp0は、NSmutablearrayはいくつかのユーザー ID を持ち、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 に答える