Tag: nsexpression

集合函数上的iOS FetchRequest:如何包含挂起的更改?

我终于至less缩小了这个问题。 我正在计算一些支出的总和函数(在这个例子中是总和)。 如果我改变了一些支出,这个聚集提取不会立即刷新,而只是在一段时间之后(可能在更改被保存到数据库之后)。 我在文档中find了这个部分: – (void)setIncludesPendingChanges:(BOOL)yesNo 根据文件 结果typesNSDictionaryResultType不支持YES值,包括计算聚合结果(如max和min)。 对于字典,从读取中返回的数组反映了持久性存储中的当前状态,并且不考虑上下文中的任何挂起的更改,插入或删除。 如果您需要为最大和最小等简单聚合考虑待处理的更改,则可以改为使用正常的获取请求,按照所需的属性进行sorting,获取限制为1。 好的,我怎么能仍然包括未决的变化? 我正在使用NSFetchedResultsController来显示我的数据。 这里是我的聚合函数: – (NSNumber *)getExpendituresAmountForCostPeriod:(CostPeriod)costPeriod { NSLog(@"getExpenditures_Start"); NSFetchRequest *fetchRequest = [NSFetchRequest fetchRequestWithEntityName:@"Expenditures"]; [fetchRequest setResultType:NSDictionaryResultType]; NSDate *startDate = [NSDate startDateForCostPeriod:[self getBiggestCostPeriod]]; fetchRequest.predicate = [NSPredicate predicateWithFormat:@"forSpendingCategory = %@ AND date >= %@", self, startDate]; //Define what we want NSExpression *keyPathExpression = [NSExpression expressionForKeyPath: @"amount"]; NSExpression *sumExpression […]

使用另一个expression式作为sum:expression的参数从NSManagedObject获取聚合数据

是否可以使用expression式作为sum: expression的参数? 我有实体( NSManagedObject类) Drink属性costPerDrink , numberOfDrinks和drinkingDate 。 我想在一段时间内得到总成本( numberOfDrinks乘以costPerDrink )的总和。 虽然我没有任何问题得到单一财产总和(例如在时间段内数字的总和),当我尝试使用另一个(乘法)expression式的和expression式时,我得到错误: NSInvalidArgumentException, reason: Unsupported argument to sum : ( "costPerDrink * numberOfDrinks" ) 见代码: // Init fech NSFetchRequest *request = [[NSFetchRequest alloc] init]; NSEntityDescription *entity = [NSEntityDescription entityForName:@"Drink" inManagedObjectContext:[Service appContext]]; [request setEntity:entity]; // Return dictionary [request setResultType:NSDictionaryResultType]; // Set conditions [request setPredicate:[NSPredicate predicateWithFormat:@"(drinkingDate>=%@) AND […]

链式expression式在Core Data中执行计算

首先:新年快乐:-) 我正在尝试做什么 我试图在核心数据中划分两个属性,然后计算这些分区的平均值。 属性由关键path(例如eur , usd , aud )指定。 示例:我有以下数据集: date eur usd aud —————————— 2010-01-01 0.5 1.0 1.5 2010-01-02 0.6 1.1 1.6 2010-01-03 0.4 1.0 1.3 将两个属性分开,例如eur / usd与下面的结果… divide eur / usd: —————— 2010-01-01 0.5 2010-01-02 0.54 2010-01-03 0.4 …然后计算这些数字的平均值(0.5 + 0.54 + 0.4)/3 = 0.48 我的代码 由于我想这些计算由Core Data直接执行,所以我创build了以下expression式和获取请求: NSExpression *fromCurrencyPathExpression = [NSExpression […]

在swift中捕获无效用户input的exception

我正在尝试这是一个计算器的代码。 我如何处理无效的用户input? //解答:将头部桥接到Objective-C // https://github.com/kongtomorrow/TryCatchFinally-Swift 这是同样的问题,但在objc,但我想迅速做到这一点。 捕获NSExpression中的NSInvalidArgumentException 所有我想要显示的是一个消息,如果它不起作用,但现在我得到一个exception,当用户没有input正确的格式。 import Foundation var equation:NSString = "60****2" // This gives a NSInvalidArgumentException', let expr = NSExpression(format: equation) // reason: 'Unable to parse the format string if let result = expr.expressionValueWithObject(nil, context: nil) as? NSNumber { let x = result.doubleValue println(x) } else { println("failed") }