2015-11-04 58 views
0

我已经从CoreData返回了一个Customer对象。我试图计算存在于NSSet中所有amount属性的总和:通过每个记录NSSet中属性的总和

extension Customer { 
    //... 
    @NSManaged var customer_Invoices: NSSet? 
} 

extension Invoice { 
    //... 
    @NSManaged var amount: NSDecimalNumber? 
    @NSManaged var invoice_Customer: Sale? 
} 

我能循环,并添加他们,但我认为有一个更好的办法?

这样做的最好方法是什么?在C#中,我通常只使用简单的linq查询,在Swift中是否存在类似的东西?

+0

查看[Key-Value coding collection operators](https://developer.apple.com/library/mac/documentation/Cocoa/Conceptual/KeyValueCoding/Articles/CollectionOperators.htm)。就像'customer_Invoices.valueForKeyPath(“@ sum.amount”)'... –

回答

1

我只是循环。其他人阅读和理解你在做什么会更容易。并且更容易调试,如果您需要的话。而且这可能是最快的(关于你做得足够重要的机会)。

如果你真的要聪明一点,你可以这样做:

total = customer.valueForKeyPath("@sum.amount") 

Key Value Coding/Collection Operators。它不像LINQ那样功能全面,功能强大,所以你会发现它是一个糟糕的替代品。如果您决定使用它,请阅读整本指南,因为您可能无法预期有关KVC的特殊情况。

+0

谢谢。我会错过LINQ :( – Joseph

+0

你和我都。 –