2010-05-31 2 views
0

Я получаю исключение, когда пытаюсь получить @sum в столбце приложения iPhone Core-Data.Основные данные @sum aggregate

Мои две модели Подписчиков -

модель Задача:

@interface Task : NSManagedObject 
{ 

} 

@property (nonatomic, retain) NSString * taskName; 
@property (nonatomic, retain) NSSet* completion; 

@end 

@interface Task (CoreDataGeneratedAccessors) 
- (void)addCompletionObject:(NSManagedObject *)value; 
- (void)removeCompletionObject:(NSManagedObject *)value; 
- (void)addCompletion:(NSSet *)value; 
- (void)removeCompletion:(NSSet *)value; 

@end 

Завершение модели:

@interface Completion : NSManagedObject 
{ 
} 

@property (nonatomic, retain) NSNumber * percentage; 
@property (nonatomic, retain) NSDate * time; 
@property (nonatomic, retain) Task * task; 

@end 

А вот выборки:

NSFetchRequest *request = [[NSFetchRequest alloc] init]; 
request.entity = [NSEntityDescription entityForName:@"Task" inManagedObjectContext:context]; 
NSSortDescriptor *sortDescriptor = [[NSSortDescriptor alloc] initWithKey:@"taskName" ascending:YES]; 
request.sortDescriptors = [NSArray arrayWithObject:sortDescriptor]; 
NSError *error; 
NSArray *results = [context executeFetchRequest:request error:&error]; 
NSArray *parents = [results valueForKeyPath:@"taskName"]; 
NSArray *children = [results valueForKeyPath:@"[email protected]"]; 
NSLog(@"%@ %@", parents, children); 
[request release]; 
[sortDescriptor release]; 

Исключение составляет брошенный четвертая строка снизу. Исключено исключение:

*** -[NSCFSet decimalValue]: unrecognized selector sent to instance 0x3b25a30 
*** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '*** -[NSCFSet decimalValue]: unrecognized selector sent to instance 0x3b25a30' 

Я был бы очень признателен за любую помощь. Спасибо.

Редактировать: Я на снежном леопарде 10.6.3 и SDK 3.1.3.

ответ

2

Если вы хотите, чтобы рассчитать общий процент завершения суммы каждой задачи можно реализовать поглотитель для «completionSum» в классе задач

// interface (Task.h) 
@property (nonatomic, readonly) NSNumber* completionSum;  

// implementation (Task.m) 
-(NSNumber*) completionSum 
{ 
    return [self valueForKeyPath:@"[email protected]"]; 
} 

Расчет с использованием @sum медленно и это решение не соответствует KVO , Если вам это нужно, вам следует рассмотреть возможность внедрения решения с использованием KVO.

Я уже разместил ссылку на решение проблемы с открытым исходным кодом (http://qr.cx/FVi)

Смежные вопросы