Как я могу использовать метод writeToFile на NSMutableDictionary? - PullRequest
9 голосов
/ 20 сентября 2011

Я хотел бы использовать метод ( writeToFile ), доступный только для NSDictionary объекта NSMutableDictionary.Итак, как мне преобразовать этот объект NSMutableDictionary в NSDictionary?

Ответы [ 6 ]

14 голосов
/ 20 сентября 2011

NSMutableDictionary наследуется от NSDictionary. Таким образом, writeToFile должен быть доступен обоим классам.

13 голосов
/ 16 августа 2015

Для тех, кто приезжает сюда, искренне ищет преобразование из NSMutableDictionary в NSDictionary:

NSMutableDictionary *mutableDict = [[[NSDictionary alloc] initWithObjectsAndKeys:
                              @"value", @"key"] mutableCopy];

NSDictionary *dict = [NSDictionary dictionaryWithDictionary:mutableDict]; //there you have it
7 голосов
/ 20 сентября 2011

NSMutableDictionary является подклассом NSDictionary, поэтому метод writeToFile должен быть доступен для вашего объекта без необходимости приведения или преобразования.

6 голосов
/ 20 сентября 2011

Как уже обсуждалось здесь:

Как сохранить NSMutableDictionary в файл в документах?

вам не нужно конвертировать его.

Но если вы действительно хотите, просто используйте метод copy в вашем NSMutableDictionary или метод dictionaryWithDictionary: в NSDictionary.Оба обеспечивают NSDictionary от NSMutableDictionary.

3 голосов
/ 20 сентября 2011

NSMutableDictionary является NSDictionary, так как это подкласс. Обычно отношение подкласса к его суперклассу называется: "is a".

1 голос
/ 03 марта 2016

Чтобы обратиться к фактическому названию вопроса, а не к его содержанию (так как я искал этот вопрос), вы действительно можете положиться на copyWithZone:, чтобы перейти к Неизменному словарю.

NSMutableDictionary *mutableDict = [[NSMutableDictionary alloc] init];
mutableDict[@"key"] = @"value";
NSDictionary *immutableDict = [mutableDict copy];
...