Как загрузить NSDictionary из файла, созданного с помощью writeToFile? - PullRequest
3 голосов
/ 06 ноября 2011

У меня есть NSMutableDictionary, и я написал его, используя

[stuff writeToFile:@"TEST" atomically:YES];

Как я могу получить его в будущем?

Кроме того, что произойдет, если я решу заменить свой iPhone 4с 4S?Можно ли передать часть моих письменных данных?

Ответы [ 4 ]

9 голосов
/ 06 ноября 2011

Я думаю, что вы хотите что-то вроде:

[[NSMutableDictionary alloc] initWithContentsofFile:[self dataFilePath]];

Вам нужно получить правильный путь для хранения и получения вашего файла в соответствии с этой процедурой:

- (NSString *)dataFilePath {
    NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
    NSString *documentsDirectory = [paths objectAtIndex:0];
    return [documentsDirectory stringByAppendingPathComponent:@"TEST"];
}
2 голосов
/ 07 ноября 2011

Сначала вам нужно определить путь для записи.Если вы используете [stuff writeToFile:@"TEST" atomically:YES]; в симуляторе iPhone, он запишет файл с именем TEST в вашу домашнюю директорию вашего Mac.Используйте этот код для сохранения в папке «Документы» в симуляторе и на iPhone

NSArray *path = NSSearchPathForDirectoriesInDomains(
            NSDocumentDirectory, NSUserDomainMask, YES);
    NSString *documentDirPath = [path objectAtIndex:0];

Вот код, необходимый для чтения и записи файлов.

0 голосов
/ 11 января 2016

Решение Swift

let documentsPath = NSSearchPathForDirectoriesInDomains(.DocumentDirectory, .UserDomainMask, true)[0] as String
let filePath = (documentsPath as NSString).stringByAppendingPathComponent("data.txt")

if let data = NSDictionary(contentsOfFile: filePath) {
}
0 голосов
/ 06 ноября 2011

Вы можете использовать NSUserDefaults для хранения своего словаря следующим образом:

[[NSUserDefalts standardUserDefaults] setObject:myDictionary forKey:@"myKey"];

И позже вы можете получить его так:

[[NSUserDefalts standardUserDefaults] objectForKey:@"myKey"];

Также ничего не будетпроизойдет, если вы используете тот же код с iPhone 4 или iPhone 4S.

...