Форум программистов, компьютерный форум, киберфорум
Наши страницы
Программирование iOS/iPhone
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.92/12: Рейтинг темы: голосов - 12, средняя оценка - 4.92
cavick
0 / 1 / 0
Регистрация: 28.01.2014
Сообщений: 8
1

Как сохранять данные в plist?

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

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

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

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

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

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

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

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

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

Plist или coredata
Доброго времени суток! В tutorial...

Хранение данных в plist
привет. требуется хранить список факультетов, для каждого факультета хранить...

Загрузка данных из plist в Master-Detail приложении
Доброго Вам времени суток, увадажемые знатоки iOS! Недавно начал изучать...

TableView и plist -не отображаются данные
Учусь писать приложения по книге Д.Пайлон, Т.Пайлон "Программируем для iphone и...

Как сохранять и выгружать данные из файловой системы
Перелопатил кучу статей в гугле, но четкого понимания так и не появилось. ...

2
Pro2005
44 / 44 / 3
Регистрация: 27.05.2013
Сообщений: 163
02.04.2014, 17:56 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....
0
Alex2301
-21 / 0 / 0
Регистрация: 14.06.2013
Сообщений: 33
07.04.2014, 12:18 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]) {
    }
}
Его можно вызывать при каждом добавлении или редактировании записи, либо же по нажатию какой либо кнопки.

Но на симуляторе это не заработает, только на реальном девайсе.
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
07.04.2014, 12:18

Xcode - plist и array
Пытаюсь занести инфу с плиста в массив, а оно не хочет, он пустой, 0 элементов....

Поиск и вывод по plist
Здравствуйте, Уважаемые! Подскажите пожалуйста где найти (или как...

Добавление информации в .plist
Здравствуйте. Никак не получается добавить информацию в файл. Все время...


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

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru