Форум программистов, компьютерный форум, киберфорум
Наши страницы

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

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

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

02.04.2014, 15:49. Просмотров 2025. Ответов 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? (Программирование iOS):

Хранение данных в plist - Программирование iOS
привет. требуется хранить список факультетов, для каждого факультета хранить список специализаций, для каждой специализации хранить...

Plist или coredata - Программирование iOS
Доброго времени суток! В tutorial https://www.youtube.com/watch?v=r6Cn6Kp5ghA&list=PLxqbutB-EOO0WOPOScvFeSkMO0Pw8atiu&index=10 , на 24...

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

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

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

Поиск и вывод по plist - Objective-C
Здравствуйте, Уважаемые! Подскажите пожалуйста где найти (или как организовать) такое: есть некий plist в котором есть код города...

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 - Objective-C
Пытаюсь занести инфу с плиста в массив, а оно не хочет, он пустой, 0 элементов. Подскажите, что я делаю не так?

Добавление информации в .plist - Objective-C
Здравствуйте. Никак не получается добавить информацию в файл. Все время перезаписывается. Подскажите, пожалуйста, что я не так делаю...

Как сохранять данные макросом? - VBA
Запускаем макрос. По умолчанию присвоено следующее название файла name_file='C:1.txt' выскакивает окно ' Файл по умолчанию...

Как лучше сохранять данные - C++
Привет. Мне нужно сохранять и считывать некоторые данные. Как это лучше сделать? Использовать XML или базы данных?


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

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

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