Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/iphone/43.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Arrays 在可变数组中分组数据_Arrays_Iphone_Nsmutablearray_Grouping - Fatal编程技术网

Arrays 在可变数组中分组数据

Arrays 在可变数组中分组数据,arrays,iphone,nsmutablearray,grouping,Arrays,Iphone,Nsmutablearray,Grouping,我有一个数组,其中包含来自xml文件的大量数据。我把它显示在一个桌面视图上,然后当你点击某个作者时,它就会显示他们所有的书 目前,我的NSMutableArray对每本书都有一个条目,包括标题、作者等。因此,在作者表中,它显示作者姓名的次数与他们拥有书籍的次数相同。我想对数组数据进行分组,以便表中只显示每个作者一次,但作者包含其书籍的数组。看起来很简单,但我找不到数组的分组方法。您可以循环使用books数组,并为作者创建一个新数组。对于每本书,使用containsObject检查该作者是否已经在

我有一个数组,其中包含来自xml文件的大量数据。我把它显示在一个桌面视图上,然后当你点击某个作者时,它就会显示他们所有的书


目前,我的NSMutableArray对每本书都有一个条目,包括标题、作者等。因此,在作者表中,它显示作者姓名的次数与他们拥有书籍的次数相同。我想对数组数据进行分组,以便表中只显示每个作者一次,但作者包含其书籍的数组。看起来很简单,但我找不到数组的分组方法。

您可以循环使用books数组,并为作者创建一个新数组。对于每本书,使用containsObject检查该作者是否已经在authors数组中。但是,当用户选择一个作者时,您还必须担心仅从books数组中显示该作者的书籍

最好首先将xml文件加载到NSMutableDictionary中,而不是键是作者姓名,每个键的对象是该作者书籍的NSMutableArray

然后author tableview将使用字典的键作为数据源(使用allKeys返回的数组,您可以根据需要对其进行排序,或者使用keysSortedByValueUsingSelector),books tableview将使用所选键的book数组


如果数据太大,无法一次全部加载到内存中,则必须使用其他选项,如SQLite。

是的,我认为它们可能是将数组分组到特定字段上的一个简单函数。我使用for循环在主数组中循环,并为每个组填充一个子数组,但当我将其添加到主数组时,它会将子数组作为对象添加,因此当我下次更改它时,它会为主数组中的所有引用更改它。有没有办法将子数组复制到主数组中,这样就不会发生这种情况?thanksBy“main”数组是指“所有作者的书”,而“sub”数组是指“特定作者的书”?不知道为什么要将子数组添加回主数组,或者“下次更改”是什么意思。如果您发布创建子数组的代码并将其添加回主数组(将代码添加到问题中,而不是作为注释),可能会有所帮助。我确实认为更简单、更直接的解决方案是使用NSMutableDictionary。这将自动为您按作者对书籍进行分组。我已通过创建一个对象数组并将其传回解决了这一问题,因此我可以使用每个对象getter和setter获得所需的任何内容!