Xcode 4 создает .plist - PullRequest
       37

Xcode 4 создает .plist

0 голосов
/ 23 мая 2011

У меня есть кое-что интересное, я использую xcode 4 для своего проекта и хочу создать простой файл .plist для сохранения нескольких значений, которые будут использоваться для разных целей во время выполнения кода.Это код, который я использую для создания plist:

- (NSString *)dataFilePath {
    NSArray *paths = NSSearchPathForDirectoriesInDomains(
    NSDocumentDirectory, NSUserDomainMask, YES);
    NSString *documentsDirectory = [paths objectAtIndex:0];
    return [documentsDirectory stringByAppendingPathComponent:@"somelist.plist];
}

последняя строка кода, которая должна добавлять имя plist к пути, не выполняет свою работу.Плист никогда не создается.Теперь, странная вещь, мне удалось создать несколько дней назад, используя тот же код.После этого я перемещаю этот фрагмент кода только в AppDelegate, потому что вызываю этот код из разных мест.Я обнаружил, что это не работает, когда я переключаюсь на эмулятор 4.3, а затем пробую его на устройстве iphone.Когда я переключаюсь на эмулятор 4.2, он работает, потому что уже есть plist, однако, когда я изменяю его имя (для создания нового), ничего не происходит - значит, список не создается.Я также пытаюсь переместить код обратно в исходное место, но это не дало желаемого результата.

1 Ответ

0 голосов
/ 23 мая 2011

Ваш код не должен создавать список в любом случае, только возвращать путь. Для того, чтобы действительно сохранить список по выбранному пути, вы можете выбрать несколько подходов, например, использовать следующий метод в NSDictionary:

- (void)saveDictionary 
{
    NSDictionary *dictionary = [NSDictionary dictionaryWithObject:@"bla" forKey:@"test"];
    NSString *path = [self datafilePath];
    [dictionary writeToFile:path atomically:YES];
}

- (NSString *)dataFilePath {
    NSArray *paths = NSSearchPathForDirectoriesInDomains(
    NSDocumentDirectory, NSUserDomainMask, YES);
    NSString *documentsDirectory = [paths objectAtIndex:0];
    return [documentsDirectory stringByAppendingPathComponent:@"somelist.plist];
}
...