在for循环中迭代字典数组

时间:2018-04-30 22:00:20

标签: objective-c for-loop nsdictionary

我必须以下列格式构建字典数组。

  

[{@" value":@ 1,@" day":@ 2,@" hour":@ 1},{@&#34 ;值":@ 1,@"日":@ 1,@"小时":@ 1} ....]

现在正按照以下方式构建每个字典。

 NSDictionary *dict =  @{@"value":@1, @"day":@2,@"hour":@1};
 NSDictionary *dict2 = @{@"value": @1,@"day":@1,@"hour":@1};

然后我将其添加到数组中。

 NSArray *data = [NSArray arrayWithObjects:dict,dict2,nil];

这对于已知值很好,但我需要更改' day'和'小时'在for循环中,在我的数组中创建多个字典。

首先是创造“一天”。如下。

    NSInteger weekday = [[NSCalendar currentCalendar] 
    component:NSCalendarUnitWeekday fromDate:[NSDate date]];

然后在'小时'我为所需的范围创建了for循环,如下所示。

for (int i =start ; i <=end; i++) {

         NSDictionary *dict =  @{@"value": @1, @"day":@weekday, 
         @"hour":@i};

}

我正在努力的步骤是更新小时&#39;和&#39; day&#39;在...内  for循环。其次,我需要在循环中创建多个字典  不需要将所有值添加到单个字典中。单字典  应该像

  

{@&#34; value&#34;:@ 1,@&#34; day&#34;:@ 2,@&#34; hour&#34;:@ 1}

创建字典数组后,我将其传递给JsonNSData对象的NSdata对象。我的最终输出如下所示

  

[{&#34;值&#34;:1,&#34;天&#34;:0,&#34;小时&#34;:0},{&#34;值&#34;:1 &#34;天&#34;:0,&#34;小时&#34;:1},{&#34;值&#34;:1,&#34;天&#34;:0,&#34 ;小时&#34;:2},{&#34;值&#34;:1,&#34;天&#34;:0,&#34;小时&#34;:3},{&#34;值& #34;:1,&#34;天&#34;:0,&#34;小时&#34:4},{&#34;值&#34;:1,&#34;天&#34 ;: 0,&#34;小时&#34;:5}]

2 个答案:

答案 0 :(得分:0)

如果你没有完全理解你想要做什么,我相信如果你在哪里创建一个包含你想要阅读的三个属性的基本对象,那将会更好。修改然后创建上述对象的数组。

20:11:40.124

然后,您可以简单地遍历“YourObjectName”数组并修改/检查值。

@interface YourObjectName : NSObject
@property (nonatomic, strong) NSNumber *someValue;
@property (nonatomic, strong) NSString *day;
@property (nonatomic, strong) NSNumber *hour
@end

@implementation YourObjectName
@end

或者,您可以遍历现有数组,然后遍历字典键以获取和修改值。

答案 1 :(得分:0)

实际上你需要一个字典数组而不仅仅是字典。在更新问题后,现在很清楚。

NSInteger weekday = [[NSCalendar currentCalendar] 
component:NSCalendarUnitWeekday fromDate:[NSDate date]];

然后在&#39;小时&#39;我为所需的范围创建了for循环,如下所示。

这里需要一个数组:

NSMutableArray *array = [[NSMutableArray alloc] init];
for (int i =start ; i <=end; i++) {
    NSDictionary *dict =  @{@"value": @1, @"day":@(weekday), @"hour":@(i)};
    [array addObject:dict];
}
NSLog(@"%@", array);