Форум программистов, компьютерный форум CyberForum.ru

Программирование iOS/iPhone

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 14, средняя оценка - 4.71
cavick
0 / 1 / 0
Регистрация: 28.01.2014
Сообщений: 8
#1

Как сохранять данные в plist? - Программирование iOS/iPhone

02.04.2014, 15:49. Просмотров 1805. Ответов 2
Метки нет (Все метки)

Парни всем доброго времени суток.

Я еще пока нуб в айос программировании, в связи с этим у меня возникло несколько вопросов так как встала передо мной задача

1. Мне нужно сохранять данные о котах локально в plist файле, а именно
- название породы
- краткое описание
- изображение кота
как организовать формат хранения данных, что нужно NSDictionary или NSArray достаточно? я прочитал что UIImage не хранятся в plist файле, тогда что получается просто хранить путь к картинке в plist файле?

2. как лучше создавать файл в Xcode или программно с помощью сообщения writeToFile:[self dataFilePath] atomically:YES

3. не понятен также еще один момент как добавлять информацию о новом коте, для этого нужно заново перечитывать весь plist файл дописывать в конец информацию и обратно записывать в plist файл или имеется возможность дописывать в конец plist файла без чтения старой информации?

4. как определять открывалась ячейка в таблице или нет?

Заранее всем спасибо за отклики по моим вопросам.

Добавлено через 2 часа 0 минут
Гуру iOS dev подскажите или намекните
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
02.04.2014, 15:49     Как сохранять данные в plist?
Посмотрите здесь:

Загрузка данных из plist в Master-Detail приложении
Objective-C Добавление информации в .plist
TableView и plist -не отображаются данные Objective-C
Хранение данных в plist
Objective-C Как передавать данные между контроллерами Tab Bar-a
Как добавить JSON данные в GET запрос?
Поиск и вывод по plist Objective-C
Как сохранять и выгружать данные из файловой системы Objective-C
Как сохранить данные при переходе на другой ViewController?
Plist или coredata
SQLite вывезка данные и выложить извлеченные данные к MessageUI Objective-C
Objective-C Xcode - plist и array

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Pro2005
44 / 44 / 3
Регистрация: 27.05.2013
Сообщений: 163
02.04.2014, 17:56     Как сохранять данные в plist? #2
1. как организовать формат хранения данных, что нужно NSDictionary или NSArray достаточно? -> можно хоть все в одну строку засунуть, главное желание )) А так NSArray с NSDictionary.
тогда что получается просто хранить путь к картинке в plist файле? -> если картинки будут сразу "зашиты в bundle" - то достаточно хранить имя файла. Если будет храниться удаленно URL адрес
2. как лучше создавать файл в Xcode или программно с помощью сообщения writeToFile:[self dataFilePath] atomically:YES --> plist файл можете создать как программно, так и исп меню xcode File->New->File. Что лучше потом расскажите, не когда над этим так сильно не задумывался....
3. не понятен также еще один момент как добавлять информацию о новом коте, для этого нужно заново перечитывать весь plist файл дописывать в конец информацию и обратно записывать в plist файл или имеется возможность дописывать в конец plist файла без чтения старой информации? --> считали plist файл в массив, изменили данные... и сохранили когда нужно...
4. как определять открывалась ячейка в таблице или нет? --> если под ячейкой вы имеете ввиду UITableViewCell, то тогда я думаю вам следует взглянуть на UITableViewDelegate

*** все эти вопросы/ответы можно с легкостью найти в любой книге или исп google....
Alex2301
-21 / 0 / 0
Регистрация: 14.06.2013
Сообщений: 33
07.04.2014, 12:18     Как сохранять данные в plist? #3
Нужно создать класс наследник от NSObject, в который будет заноситься вся информация. И в .m файле нужно описать кодер и декодер для сохранения данных.

Objective-C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
@implementation CellObject
@synthesize title, links, isFavorite;
- (void)encodeWithCoder:(NSCoder *)aCoder
{
    [aCoder encodeObject:title forKey:@"title"];
    [aCoder encodeObject:links forKey:@"links"];
    [aCoder encodeBool:isFavorite forKey:@"favorite"];
 
}
 
- (id)initWithCoder:(NSCoder *)aDecoder
{
    self = [super init];
    if (self)
    {
        [self setTitle:[aDecoder decodeObjectForKey:@"title"]];
        [self setLinks:[aDecoder decodeObjectForKey:@"links"]];
        [self setIsFavorite:[aDecoder decodeBoolForKey:@"favorite"]];
    }
    return self;
}
 
 
@end
Это методы для получения данных из Вашего файла:

Objective-C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
- (NSString *)dataFilePath
{
    NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
    NSString *documentsDirectory = [paths objectAtIndex:0];
    NSString *dataPath = [documentsDirectory stringByAppendingPathComponent:@"CustomFeed.plist"];
    return dataPath;
}
 
- (NSMutableArray *)getListOfHubs
{
    NSString *path = [NSHomeDirectory() stringByAppendingPathComponent:@"CustomFeed.plist"];
    NSMutableData *data =[[NSMutableData alloc] initWithContentsOfFile:path];
    NSMutableArray *array = [NSKeyedUnarchiver unarchiveObjectWithData:data];
    return array;
}
Они должны быть описаны в Вашем контроллере.

У меня был вот такой метод сохранения:

Objective-C
1
2
3
4
5
6
- (void) persist {
    NSArray* rssArray = self.rssObjectArray;
    NSData *data = [NSKeyedArchiver archivedDataWithRootObject:rssArray];
    if ([data writeToFile:[self dataFilePath] atomically:YES]) {
    }
}
Его можно вызывать при каждом добавлении или редактировании записи, либо же по нажатию какой либо кнопки.

Но на симуляторе это не заработает, только на реальном девайсе.
Yandex
Объявления
07.04.2014, 12:18     Как сохранять данные в plist?
Ответ Создать тему
Опции темы

Текущее время: 02:00. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru