#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 … и вот оно… еще раз спасибо, что указали мне правильное направление