Iphone 如何汇总提取的结果';基于对象的s number属性';什么类别?

Iphone 如何汇总提取的结果';基于对象的s number属性';什么类别?,iphone,ios,nsmutablearray,nsfetchedresultscontroller,nsfetchrequest,Iphone,Ios,Nsmutablearray,Nsfetchedresultscontroller,Nsfetchrequest,我有一个NSFetchRequest,它返回我保存的所有对象(称它们为Items),并将它们存储在NSMutableArray中。每个项目都有一个类别、一个金额和一些其他属性。我的目标是检查每个项目的类别,并存储相同类别对象的金额总和。因此,如果我有这些项s: 红色;10点 蓝色;20.00 绿色;五点 红色;五点 绿色;15:00 然后我会有一个数组或其他类型的容器,而不是: 红色;15:00 蓝色;20.00 绿色;20.00 以这种方式组织数据的最佳方式是什么?我要创建一个对象类(

我有一个
NSFetchRequest
,它返回我保存的所有对象(称它们为
Item
s),并将它们存储在
NSMutableArray
中。每个
项目都有一个类别、一个金额和一些其他属性。我的目标是检查每个
项目的类别
,并存储相同类别对象的金额总和。因此,如果我有这些
s:

  • 红色;10点
  • 蓝色;20.00
  • 绿色;五点
  • 红色;五点
  • 绿色;15:00
然后我会有一个数组或其他类型的容器,而不是:

  • 红色;15:00
  • 蓝色;20.00
  • 绿色;20.00

以这种方式组织数据的最佳方式是什么?我要创建一个对象类(称之为
Totals
),它只包含类别和数量。在for循环中遍历fetch结果时,在
Totals
对象中添加具有相同类别的
s,并将它们存储在
NSMutableArray
中。我遇到的问题是,我不确定如何检查数组是否包含具有特定属性的
Totals
对象。具体来说,是一个已经存在的类别。因此,如果存在“红色”,则将金额添加到其中,否则创建一个类别为“红色”的新的
总计
对象和第一个
项目
的金额。谢谢。

要回答您的问题并为您提供在许多情况下都会有帮助的通用方法,您可以使用[myObject isKindOfClass:aClass]方法,然后使用NSObject的respondsToSelector:method

如果你知道你会得到什么样的数据。。您只需实例化一个红色=0、蓝色=0、绿色=0的对象合计,然后相应地添加金额

作为另一个选项,您可以查看键值编码:


您可以使用NSMutableDictionary类来实现这一点。如果键存在,您将在total对象(NSMutableDictionary)中查找,如果键不存在,则创建它,如果键存在,则添加值。

我不确定您到底打算如何使用isKindOfClass方法。我知道什么课会被退回。但是,我不知道这些对象将具有哪些类别。这些颜色都是样本数据,而且类别比它们多得多,所以我不想为每个类别创建一个对象,因为很多类别可能永远不会被使用。哦,是的,键值可能会起作用。我还没试过呢。我一做到,就给你道具。