Xcode 4 создает .список

#iphone #objective-c #xcode #ios #property-list

#iPhone #objective-c #xcode #iOS #список свойств

Вопрос:

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

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

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

Ответ №1:

Ваш код в любом случае не должен создавать список, только возвращать путь. Чтобы на самом деле сохранить список по выбранному пути, вы могли бы выбрать несколько подходов, например, использовать следующий метод в 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];
}
  

Комментарии:

1. Спасибо, чувак. Конечно, у меня это есть в моем коде, но я случайно не скопировал это в delegate … и вот оно… еще раз спасибо, что указали мне правильное направление