我有一个NSArray对象,它是无序的。它是从互联网更新的,因此我无法订购一次,并保证以后的订单。
每个项目对应一个表格视图单元格,但用户可以重新排序这些项目,并且在tableview中有2个部分,但首先是所有单元格都在一个部分中。
所以我可以创建一个重复的NSArray并订购它。并将其保存到硬盘驱动器。 但这似乎是一种浪费,当通过互联网更新向无序NSArray添加/删除新对象时,我该怎么办。
总而言之:
我如何拥有一个无序的NSArray,一个没有重复的订购(以及浪费内存)?
当用户没有为新对象/单元格设置位置时,如何处理无序数组的更新?
答案 0 :(得分:3)
你的问题不是很清楚:
所以我不得不猜测你想说的是什么:
嗯,首先你需要一些方法来找出两个列表中的哪些项目是“等效的”。例如,第一个列表是[Apple,Banana,Orange],用户将其置于果汁优先顺序[Orange,Apple,Banana]。如果第二个列表是[apple,banana,orange](因为你决定一切都应该是小写的,并且需要大写的东西可以使用-[NSString capitalizedString]
或其他),你需要一种方法来确定Apple = apple并构建一个新列表[orange,apple,banana]。
目前尚不清楚为什么你认为你必须保存原始列表 - 是的,这意味着你只能说“苹果和苹果都在索引0,所以它们是相同的”,但这也意味着你永远不能更改默认订单,您永远不能删除项目(您可以用占位符替换它,但是meh)。
有两种简单的解决方案:
答案 1 :(得分:2)
如果它们都引用相同的对象(而不是副本),则额外的内存将非常小(NSArray开销和指针),并且可能不值得担心。