You're only ever creating one dictionary, and then modifying it in every iteration. Your final result contains the same dictionary N times, not N copies of the last dictionary.
You're doing this, basically:
NSMutableDictionary *dict = [NSMutableDictionary dictionary];
NSMutableArray *dictionaries = [NSMutableArray array];
for (NSInteger i = 0; i < 10; i++) {
dict[@"something"] = @(i);
[dictionaries addObject:dict]; // adding the same dictionary you added last time
}
You want to be doing this:
NSMutableArray *dictionaries = [NSMutableArray array];
for (NSInteger i = 0; i < 10; i++) {
NSMutableDictionary *dict = [NSMutableDictionary dictionary];
dict[@"something"] = @(i);
[dictionaries addObject:dict]; // adding the newly created dictionary
}
Side note...don't name your variables in Uppercase. In Objective-C, uppercase identifiers are used for class names. It's not technically wrong, but it's against the standard coding conventions for the language, which makes the code harder to read for other developers.