【问题标题】:How to display an NSSet in a UITableView?如何在 UITableView 中显示 NSSet?
【发布时间】:2010-11-29 04:32:09
【问题描述】:

您将如何继续在UITableView 中显示NSSet 的内容?

如您所知,表格视图会要求给定行的元素,但由于 NSSet 元素没有排序,这不能很好地混合。

我目前的解决方案是遍历NSSet,直到我到达给定索引处的元素,但这确实感觉不对。

您可能会问我为什么不使用NSArray。这是因为我使用的是 Core Data,它使用NSSets 来存储元素集合。

任何帮助将不胜感激。

【问题讨论】:

    标签: iphone uitableview nsset


    【解决方案1】:

    既然您只显示元素,为什么不使用NSSet,然后调用-[allObjects] 以获取NSArray

    如果您的数据发生变化,无论如何您都必须重新获取,即使使用NSSet,并且除了从NSSet 进行初始转换之外,使用数组非常快。

    【讨论】:

    • 那么我们是否可以安全地假设连续两次调用“allObjects”以相同的顺序返回元素(当 NSSet 未更改时)?因为文档只说“订单未定义”,所以没有提到订单是稳定的。如果它现在稳定,你确定它会在未来的 iOS 版本中保持稳定吗?我不太确定是否依赖此函数来获取可以在表格视图中显示的元素。
    • @ChristopheFondacci 只需调用一次allObjects 并将结果存储在一个变量中,直到 VC 被关闭,或者直到再次更改集合。
    • @VictorJalencas 是的,我知道该怎么做,这不是我的问题。我的问题是关于 allObjects 的实现。
    • @ChristopheFondacci 两次调用allObjects 期望得到相同的结果可能不是一个好主意。即使对于某些集合它有效,作为一个类集群,结果可能取决于对象的数量。因此,如果您需要可重复性,我的建议是只调用一次并保留结果,而不是每次调用allObjects。即使您不需要它,迭代同一个数组也比获得一个新数组要快。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-02-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-12-31
    相关资源
    最近更新 更多