Как сохранить NSMutableDictionary в файл в документах? - PullRequest
1 голос
/ 20 сентября 2011

Я хотел бы сохранить содержимое объекта NSMutableDictionary в файл. Как мне это сделать ? Я уже знаю, как выполнить эту задачу с объектом NSDictionary, но я не знаю, как преобразовать / скопировать этот NSMutableDictionary в NSDictionary ... если только не существует метода для прямой записи содержимого NSMutableDictionary в файл ... Я подчеркиваю что объект NSMutableDictionary содержит объекты типа NSDictionary.

Спасибо за помощь,

Stephane

Ответы [ 2 ]

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

Если вы просто переключитесь на документы NSDictionary . Вы увидите, что есть способ сохранения словаря в файл

writeToFile:atomically:

Записывает представление списка свойств содержимого словаря в заданный путь.

- (BOOL)writeToFile:(NSString *)path atomically:(BOOL)flag

Параметры

Путь: Путь для записи файла. Если путь содержит символ тильды (~), вы должны раскрыть его с помощью stringByExpandingTildeInPath перед вызовом этого метода.

флаг: Флаг, указывающий, должен ли файл быть записан атомарно.

Если флаг равен YES, словарь записывается во вспомогательный файл, а затем вспомогательный файл переименовывается в path. Если флаг НЕТ, словарь записывается непосредственно в путь Опция YES гарантирует, что путь, если он вообще существует, не будет поврежден даже в случае сбоя системы во время записи.

Возвращаемое значение

ДА, если файл успешно записан, в противном случае НЕТ.

Этот метод рекурсивно проверяет, что все содержащиеся в нем объекты являются объектами списка свойств (экземпляры NSData, NSDate, NSNumber, NSString, NSArray или NSDictionary) перед записью файла, и возвращает NO, если все объекты не являются объектами списка свойств , поскольку результирующий файл не будет правильным списком свойств.

Если содержимое словаря - это все объекты списка свойств, файл, написанный этим методом, можно использовать для инициализации нового словаря с помощью метода класса dictionaryWithContentsOfFile: или метода экземпляра initWithContentsOfFile:.

Итак, фрагмент кода, который вы ищете, вероятно, выглядит примерно так:

[myDict writeToFile:path atomically:YES]

, где myDict - это имеющийся у вас словарь, а path - путь к папке, в которую вы хотите сохранить его, до

.
1 голос
/ 20 сентября 2011

NSMutableDictionary является подклассом NSDictionary: вы можете использовать его везде, где вы будете использовать NSDictionary. Буквально, просто передайте объект тому же коду, который вы используете для NSDictionary прямо сейчас.

В более общем смысле, если вам действительно нужно получить действительно неизменный NSDictionary от NSMutableDictionary, просто позвоните copy на NSMutableDictionary.

Другие подходы включают [NSDictionary dictionaryWithDictionary:] или [NSDictionary alloc] initWithDictionary:], которые в сущности составляют одно и то же.

...