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

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

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

core data запрос на получение суммы атрибута, всех записей - Программирование iOS

26.08.2013, 15:19. Просмотров 733. Ответов 5
Метки нет (Все метки)

Привет, есть сущность продукция имеющая свои атрибуты один из них цена,
Есть н продукций нужно найти сумму всех цен
Для этого я использую вот такого вида запрос…

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
-(void)sum{
NSFetchRequest *request = [[NSFetchRequest alloc] init];
 
    [request setEntity:[NSEntityDescription entityForName:@"Product" 
                            inManagedObjectContext:self.managedObjectContext]];
    
    
    
    [request setResultType:NSDictionaryResultType];
    
    
    
    NSExpression *keyPathExpression = [NSExpression expressionForKeyPath:@"Price"];
    
        
    NSExpression *sumExpression = [NSExpression
                                   expressionForFunction:@"sum:" arguments:[NSArray arrayWithObject:keyPathExpression]];
    
 
    NSExpressionDescription *expressionDescription = [[NSExpressionDescription alloc] init];
    
 
    
    [expressionDescription setName:@"sum"];
    [expressionDescription setExpression:sumExpression];
    [expressionDescription setExpressionResultType:NSInteger32AttributeType];
    
[request setPropertiesToFetch:[NSArray    arrayWithObject:expressionDescription]];
    
    
    
    // Выполнение запроса.
    
    NSError *error = nil;
    NSArray *a =[[NSArray alloc] initWithArray: [self.managedObjectContext executeFetchRequest:request error:&error]];
    
    NSLog(@"%@",[a objectAtIndex:0]);
    
    [expressionDescription release];
    [request release];
}
когда у меня товар есть один и цена его 23
nslog выведет мне словарь
{
sum = 23;
}
когда я дальше удалю его и запущу заново приложение то выводит тоже самое хотя товара уже нет вообще)

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

Удаляю товар вот таким образом

Objective-C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
- (void)tableView:(UITableView *)tableView
commitEditingStyle:(UITableViewCellEditingStyle)editingStyle
forRowAtIndexPath:(NSIndexPath *)indexPath
{
  
    if (editingStyle == UITableViewCellEditingStyleDelete) {
[self.managedObjectContext deleteObject:[self.arrayIntem objectAtIndex:indexPath.section]];
    
        [self.managedObjectContext save:nil];
        
        [tableView deleteRowsAtIndexPaths:[NSArray arrayWithObject:indexPath]
                         withRowAnimation:UITableViewRowAnimationTop];
       [self.tableView reloadData];
 
    }
}
подскажите что я могу делать не так

Добавлено через 21 минуту
нет удоляю вот так)
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
- (void)tableView:(UITableView *)tableView
commitEditingStyle:(UITableViewCellEditingStyle)editingStyle
forRowAtIndexPath:(NSIndexPath *)indexPath
{
  
    if (editingStyle == UITableViewCellEditingStyleDelete) {
        if([[[[self.arrayIntem objectAtIndex:indexPath.section] product] allObjects] count]>1){
           
            [self.managedObjectContext deleteObject:[[[[self.arrayIntem objectAtIndex:indexPath.section] product] allObjects] objectAtIndex:indexPath.row] ];
        }
        else{
             [COLOR="Red"] [self.managedObjectContext deleteObject:[[[[self.arrayIntem objectAtIndex:indexPath.section] product] allObjects] objectAtIndex:indexPath.row] ];
[/COLOR]
                [self.managedObjectContext deleteObject:[self.arrayIntem objectAtIndex:indexPath.section]];
            }
        
         [self.managedObjectContext processPendingChanges];
         [self.managedObjectContext save:nil];
        
        [tableView deleteRowsAtIndexPaths:[NSArray arrayWithObject:indexPath]
                         withRowAnimation:UITableViewRowAnimationTop];
 
        [self.tableView reloadData];
 
         
    }
}
вот то что красное добавил и теперь работает)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
26.08.2013, 15:19     core data запрос на получение суммы атрибута, всех записей
Посмотрите здесь:

core data newManagedObject setValue: - Программирование iOS
Уважаемые форумчане! Возникла следующая проблема: создаю DataModel, добавляю Entity, добавляю attribute string. Когда выполняю ......

Нужно разъяснение с Core Data - Программирование iOS
Всем привет! Толи я идиот тупой, толи с возрастом соображалка перестает работать нормально, но я никак ни по книжкам, ни по примерам...

core data, две сущности - Программирование iOS
Привет. Есть база, в ней две сущности, предположим «факультет» и «студент» между ними связь много к одному и обратно). Требуется ...

Improve Core Data skills - Программирование iOS
Привет всем. Как-то так печально у меня складывался рабочий опыт, что с CoreData особо проектов и не было. А если и было (две штуки),...

Использование Core Data в статической библиотеке - Программирование iOS
Доброго времени суток. Прошу у вас помощи в разъяснение важного мне вопроса. Я пишу статическую библиотеку для iOS. Всё бы хороше, да...

Core Data проверка уникальности записи - Программирование iOS
Добрый вечер! Вливаюсь в CoreData потихоньку, почти все понятно, кроме вот чего: не могу до конца понять, как работает проверка данных. ...

Как записать данные в соответствующую категорию с Core Data? - Objective-C
У меня есть Table View, где перечислены каталоги (Английский, Испанский, Китайский). Зайдя в каталог, я могу создать новую запись ( за это...

Муки выбора: core data или работа "напрямую" с sqlite - Программирование iOS
Здравствуйте! Я новичок в разработке под osx и ios, но так как база на сях и плюсах была (когда-то давно), то идет это дело у меня довольно...

Запрос к сайту и получение с него новостей - Objective-C
Здраствуйте, я новечок в разработке и мне очень нужна помощь. Дали задание подать запрос к сайту (...

smart loading data - Программирование iOS
Вот нашел ссылку с помощью ответа в пред ведущей теме, но не могу никак разобраться, как сделать автоматическую загрузку JSON при свайпе в...

Core Audio - Программирование iOS
Кто нибуль работал с Core Audio с AudioUnit? Нужна помощь. :)

Вывод значения data-* атрибута всех элементов коллекции - jQuery
Всем привет. У меня есть заголовки "h3" с текстом (синий). И есть тег "li" (красный) в ".list ul li". Мне нужно получить весь список...


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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Dan_banan_
10 / 10 / 1
Регистрация: 03.03.2013
Сообщений: 87
Записей в блоге: 1
14.09.2013, 05:01     core data запрос на получение суммы атрибута, всех записей #2
Используй фетчет конроллер и предикаты для работы с базой и выборки из нее) уж лучше бы ты кодом все посчитал. То что ты показал это сложно назвать кодом, хотя и это не самое лучшее решение
что то в духе

Objective-C
1
2
3
4
5
6
7
8
9
10
NSArray *allObjects = [self.fetchedController fetchedObject];
NSinteger price = 0;
 
for(Entitiy *entityObject in allObject)
{
    if(entityObject)
    {
         price += entityObject.price; 
    }
}
zulkis
681 / 608 / 38
Регистрация: 13.01.2011
Сообщений: 1,724
14.09.2013, 13:52     core data запрос на получение суммы атрибута, всех записей #3
:/ Ну вы ребята...

Objective-C
1
double price = [allObjects valueForKeyPath:@"@sum.price"];
Objective-C
1
2
3
for(Entitiy *entityObject in allObject)
{
    if(entityObject)
Предполагаете, что в массиве NSArray может быть nil?
Dan_banan_
10 / 10 / 1
Регистрация: 03.03.2013
Сообщений: 87
Записей в блоге: 1
16.09.2013, 00:42     core data запрос на получение суммы атрибута, всех записей #4
какой массив)) это вообще из головы я написал пример) тут не массив а перебор обьектов этого массива) эту проверку можно и не ставить заведома зная что все там хорошо с обьектами но и ее наличие ничего плохого не делает впринципе
Vorona
Peace 2 all shining faces
667 / 529 / 45
Регистрация: 05.03.2010
Сообщений: 1,273
16.09.2013, 01:45     core data запрос на получение суммы атрибута, всех записей #5
ну вообще лишняя проверка это как бы лишняя проверка, особенно когда вы лопатите десятки тысяч записей
наш преподаватель по ассемблеру вообще был как-то негативно настроен против всяких if

ну это так, лирическое отступление, zulkis имел ввиду, что iOS SDK не позволит вам хранить nil в массиве, потому эта проверка просто не имеет смысла
в смысле nil туда можно добавить, но если не ошибаюсь он значит конец массива и после него ничего больше не будет доступно
zulkis
681 / 608 / 38
Регистрация: 13.01.2011
Сообщений: 1,724
16.09.2013, 08:32     core data запрос на получение суммы атрибута, всех записей #6
Цитата Сообщение от Dan_banan_ Посмотреть сообщение
какой массив)) это вообще из головы я написал пример) тут не массив а перебор обьектов этого массива) эту проверку можно и не ставить заведома зная что все там хорошо с обьектами но и ее наличие ничего плохого не делает впринципе

Не по теме:

Не хочу никого обижать или тыкать пальцем, Но:

Как только я вижу слова "это вообще из головы я написал пример)", и при этом "пример" не верен в принципе, я думаю вы сами поймете, какой вывод можно сделать...
И в довесок:

Цитата Сообщение от Dan_banan_ Посмотреть сообщение
какой массив)) это вообще из головы я написал пример) тут не массив а перебор обьектов этого массива)
Вот у меня когнитивный диссонанс происходит при чтении такого отрывка текста, который опровергает сам себя, да еще и без знаков препинания.

Yandex
Объявления
16.09.2013, 08:32     core data запрос на получение суммы атрибута, всех записей
Ответ Создать тему
Опции темы

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