Ваша мысль верна, вам нужно создать NSMutableDictionary, так как NSDictionary не может быть изменен.
NSMutableDictionary *newDoc = [[NSMutableDictionary alloc] initWithDictionary:doc];
Если у вас есть неизменяемые массивы или словари в NSDictionary, вам может потребоваться глубокая копиядля модификаций.
NSMutableDictionary *newDoc = (NSMutableDictionary *)CFPropertyListCreateDeepCopy(kCFAllocatorDefault, doc, kCFPropertyListMutableContainers);