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

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

Войти
Регистрация
Восстановить пароль
 
 
Рейтинг: Рейтинг темы: голосов - 13, средняя оценка - 4.62
13Ori31
1 / 1 / 0
Регистрация: 11.03.2013
Сообщений: 43
#1

Хранение данных в plist - Программирование iOS

15.07.2013, 11:18. Просмотров 1836. Ответов 18
Метки нет (Все метки)

привет.
требуется хранить список факультетов, для каждого факультета хранить список специализаций, для каждой специализации хранить список студентов, для каждого студента некоторое количество атрибутов.
стоит ли для такой информации использовать core data или хватит просто plist???
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
15.07.2013, 11:18
Я подобрал для вас темы с готовыми решениями и ответами на вопрос Хранение данных в plist (Программирование iOS):

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

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

Как сохранять данные в plist? - Программирование iOS
Парни всем доброго времени суток. Я еще пока нуб в айос программировании, в связи с этим у меня возникло несколько вопросов так как...

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

Хранение данных в пользовательской папке Documents - Программирование iOS
Привет. Возник такой вопрос. Моё приложение скачивает ролики большого обьема(400 - 700 мб) я храню их в Documents. Вопрос -...

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

18
13Ori31
1 / 1 / 0
Регистрация: 11.03.2013
Сообщений: 43
17.07.2013, 11:58  [ТС] #16
Привет.
выбрал для себя я core data.
Подсмотрел пример «Раскрывающаяся таблица» с сайта Imaladec, только там данные из NSDictionary и попробовал
реализовать вывод данных из Двух связанных между собой сущностей Факультет(А) и Студент(Б), связь между ними “А
один ко многим Б“ в TableView с раскрывающимися секциями(кнопки с названием факультета).
При нажатии на секцию добавляться строки с Фамилиями студентов в таблицу, под нажатой секцией.
Вот что у меня получилось.
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
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
 
 
//получаю из базы arrayIntem - массив каждый элемент которого запись из сущности "фокул." и
// с вязаные с ней записи сущности "студ".    isOp -  массив выполняющий роль флагов для каждой
// секции(открыта или закрыта)
(void)viewDidLoad
{
[super viewDidLoad];
 NSError *error = nil;
    AppDelegate *a=[[AppDelegate alloc] init];
    self.managedObjectContext= a.managedObjectContext;
    [a release];
 
NSFetchRequest *fetchRequest = [[NSFetchRequest alloc] init];
[fetchRequest setEntity:[NSEntityDescription entityForName:@"Fokl" 
                    inManagedObjectContext:managedObjectContext]];
 
self.arrayIntem = [NSMutableArray arrayWithArray:[managedObjectContext executeFetchRequest:fetchRequest
                                                                          error:&error] ];
 
isOp=[[NSMutableArray alloc] init];
    for (int i=0;i<[arrayIntem count];i++){
    
        [isOp addObject:[NSNumber numberWithInt:0]];
    }
}
 
 
//добовляеться кнопка в облость секции
- (UIView *)tableView:(UITableView *)tableView viewForHeaderInSection:(NSInteger)section
{
    
    
    NSString *sectionTitle = [[arrayIntem objectAtIndex:section] name];
    BOOL isOpen = [[isOp objectAtIndex:section] boolValue];
    NSString *arrowNmae = isOpen? @"arrowUp":@"arrowDown";
    
    
    UIButton *button = [UIButton buttonWithType:UIButtonTypeCustom];
    button.frame = CGRectMake(0.0f, 0.0f, 320.0f, 50.0f);
    button.tag = section;
    button.backgroundColor=[UIColor blackColor];
    [button setContentHorizontalAlignment:1];
    
    [button setTitle:sectionTitle
            forState:UIControlStateNormal];
    
    [button addTarget:self
               action:@selector(didSelectSection:)
     
     forControlEvents:UIControlEventTouchUpInside];
    
    [button setImage:[UIImage imageNamed:arrowNmae] forState:UIControlStateNormal];
    
    return button;
}
 
 
//метод вызываемый нажатием на кнопку 
- (void)didSelectSection:(UIButton*)sender{
    
//Создание массива индексов
    NSMutableArray *indexPaths = [NSMutableArray array];
    
    for (int i=0; i<[[[self.arrayIntem objectAtIndex:sender.tag] stud] count]; i++) {
        [indexPaths addObject:[NSIndexPath indexPathForRow:i
                                                 inSection:sender.tag]];
    }
    
    
    //Получение состояния секции
    BOOL isOpen = [[isOp objectAtIndex:sender.tag] boolValue];;
    
    //Установка нового состояния
    isOp[sender.tag]=[NSNumber numberWithBool:!isOpen];
    
    //добавление или удаление ячеек секции
    if (isOpen) {
        [self.tableView deleteRowsAtIndexPaths:indexPaths
                              withRowAnimation:UITableViewRowAnimationTop];
    } else {
        [self.tableView insertRowsAtIndexPaths:indexPaths
                              withRowAnimation:UITableViewRowAnimationTop];
    }
}
 
 
 
- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView
{
    return [arrayIntem count];
    
}
 
 
 
 
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
{
    if ([[isOp objectAtIndex:section] boolValue]) {
    
        return [[[self.arrayIntem objectAtIndex:section] stud] count];
    }
    return 0;
}
 
 
 
 
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
    static NSString *CellIdentifier = @"Cell";
    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
    if (cell == nil) {
        cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault 
                                                                          reuseIdentifier:CellIdentifier];
    }
    
    cell.textLabel.text=[[[[[arrayIntem objectAtIndex:indexPath.section] stud]
                                                    allObjects] objectAtIndex:indexPath.row] name];
    return cell;
}
вопрос все ли я так сделал)))

Добавлено через 7 минут
работает но может что то вы увидите...
0
13Ori31
1 / 1 / 0
Регистрация: 11.03.2013
Сообщений: 43
29.07.2013, 13:10  [ТС] #17
привет.
происходит рост затрачиваемой памяти, при нажатии на кнопку для раскрытия секции.

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
- (void)didSelectSection:(UIButton*)sender{
    
    NSMutableArray *indexPaths = [NSMutableArray array];
    
    for (int i=0; i<[[[self.arrayIntem objectAtIndex:sender.tag] std] count]; i++) {
        [indexPaths addObject:[NSIndexPath indexPathForRow:i
                                                 inSection:sender.tag]];
    }
    
    BOOL isOpen = [[isOp objectAtIndex:sender.tag] boolValue];;
    
    isOp[sender.tag]=[NSNumber numberWithBool:!isOpen];
    
    
   if (isOpen) {
        [self.tableView deleteRowsAtIndexPaths:indexPaths
                              withRowAnimation:UITableViewRowAnimationTop];
    } else {
        [self.tableView insertRowsAtIndexPaths:indexPaths
                              withRowAnimation:UITableViewRowAnimationTop];
    }
   
}
При выполнение этого метода [self.tableView insertRowsAtIndexPaths…], метод cellForRowAtIndexPath создать недостоющие ячейки.

Objective-C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
    static NSString *CellIdentifier = @"Cell";
    
myCellProduct *cell = (myCellProduct *)[tableView dequeueReusableCellWithIdentifier:CellIdentifier];
    if (cell == nil) {
NSArray *nib = [[NSBundle mainBundle] loadNibNamed:@"myCellProduct"
                                                     owner:self options:nil];
        cell = [nib objectAtIndex:0];
    }
    
 
    cell.backgroundColor =[UIColor colorWithPatternImage:[UIImage imageNamed:@"12345.jpg"]];
 
    cell.label1.text=[[[[[arrayIntem objectAtIndex:indexPath.section] std]
                          allObjects] objectAtIndex:indexPath.row] name];
 
    cell.label2.text=[NSString stringWithFormat : @"%@ едениц",[[[[[arrayIntem objectAtIndex:indexPath.section] std]allObjects] objectAtIndex:indexPath.row] stip]];
    
    return cell;
}
relase тут вроде не где не потерян, тогда не понятно куда уходит память...

Добавлено через 2 часа 21 минуту
блин оказалось, что в myCellProduct.m не делал [label1 relase]...[label3 relase];
извиняюсь не нужный вопрос...
0
Splitter
203 / 145 / 5
Регистрация: 13.01.2009
Сообщений: 554
29.07.2013, 18:22 #18
Цитата Сообщение от 13Ori31 Посмотреть сообщение
блин оказалось, что в myCellProduct.m не делал [label1 relase]...[label3 relase];
включи arc в проекте и забудь про релизы/ретейны
0
mobidevelop
182 / 182 / 3
Регистрация: 10.01.2013
Сообщений: 596
29.07.2013, 18:23 #19
Цитата Сообщение от Splitter Посмотреть сообщение
включи arc в проекте и забудь про релизы/ретейны
Если проект учебный - ни в коем случае нельзя этого делать!
В коммерческом, конечно, да
0
29.07.2013, 18:23
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
29.07.2013, 18:23
Привет! Вот еще темы с ответами:

Насколько рационально хранение изображений в CoreData - Программирование iOS
Всем привет! Подскажите, насколько рационально хранить большие изображения напрямую в одном из аттрибутов Entity? С одной стороны...

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

Хранение данных пользователя(инф-ию,ограничений,разрешений) в Базе Данных, нужен совет - Базы данных
Здравствуйте, подскажите пожалуйста в какой форме лучше хранить в БД информацию о пользователях, их ограничения и разрешения на...

Киносеанс - хранение данных, замена данных, добавленных новых - C++
Вообщем задача : На киносеанс популярного кинофильма осуществляетсябронирование билетов. С помощью списка организовать продажу N билетов....


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

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

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