簡體   English   中英

NSArray中的NSDictionary

[英]NSDictionary inside NSArray

我正在嘗試將1個字典的不同實例放入數組中。 共享預期和當前輸出。 請提出建議,先謝謝

Program.h

@property (nonatomic,strong)NSMutableArray* array;

Program.m

-- (void)StartFuntion
 {
_array = [[NSMutableArray alloc] init];
NSMutableDictionary* dicOne = [[NSMutableDictionary alloc] init];

[dicOne setObject:@"A" forKey:@"1"];        //Adding new
[dicOne setObject:@"B" forKey:@"2"];
[dicOne setObject:@"C" forKey:@"3"];
[dicOne setObject:@"D" forKey:@"4"];
[self addob:dicOne];                       //sending dicOne to funtion 

[dicOne removeAllObjects];              //Remove objects

[dicOne setObject:@"X" forKey:@"100"];      //Again Adding new objects
[dicOne setObject:@"Y" forKey:@"200"];
[dicOne setObject:@"Z" forKey:@"300"];
[dicOne setObject:@"W" forKey:@"400"];
[self addob:dicOne];
}


-- (void) addob:(NSMutableDictionary*)dic{

[_array addObject:dic];
NSLog(@"_array = %@",_array);

}

電流輸出:

  _array = (
         {
    100 = X;
    200 = Y;
    300 = Z;
    400 = W;
},
    {
    100 = X;
    200 = Y;
    300 = Z;
    400 = W;
}
    )

預期產量:

  _array = (
     {
    1 = A;
    2 = B;
    3 = C;
    4 = D;
},
    {
    100 = X;
    200 = Y;
    300 = Z;
    400 = W;
  }
      )

您不能重用dicOne 而不是刪除其對象,而是創建一個新實例。

_array = [[NSMutableArray alloc] init];
NSMutableDictionary* dicOne = [[NSMutableDictionary alloc] init];

[dicOne setObject:@"A" forKey:@"1"];        //Adding new
[dicOne setObject:@"B" forKey:@"2"];
[dicOne setObject:@"C" forKey:@"3"];
[dicOne setObject:@"D" forKey:@"4"];
[self addob:dicOne];                       //sending dicOne to funtion 

dicOne = [[NSMutableDictionary alloc] init];

[dicOne setObject:@"X" forKey:@"100"];      //Again Adding new objects
[dicOne setObject:@"Y" forKey:@"200"];
[dicOne setObject:@"Z" forKey:@"300"];
[dicOne setObject:@"W" forKey:@"400"];
[self addob:dicOne];

您正在重用NSMutableDictionary而不是創建新實例。 做這樣的事情...

[_array addObject:@{
                    @"1" : @"A",
                    @"2" : @"B",
                    @"3" : @"C",
                    @"4" : @"D",
                   }];

[_array addObject:@{
                    @"100" : @"X",
                    @"200" : @"Y",
                    @"300" : @"Z",
                    @"400" : @"W",
                   }];

您可以執行以下操作:

NSMutableArray array = [[NSMutableArray alloc] init];
[array addObject:dict1];
[array addObject:dict2];

當然可以,但是您必須先復制dic,然后再將其插入_array。

-- (void) addob:(NSMutableDictionary*)dic{
[_array addObject:[dic copy]];
NSLog(@"_array = %@",_array);
}

或如果要在數組中使用可變字典,請使用[dic mutableCopy]。 您也可以在調用addob:而不是在方法中時進行復制。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM