- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我一直在思考如何最好地订购一组 Core Data 托管对象,我想抛出一个我以前从未见过的想法,希望有更多 CompSci 经验的人能够告诉我我是否/为什么这是一个坏主意:我们可以使用 float 来排序 Core Data 托管对象吗?
情况是这样的:
为简单起见,假设一所学校有许多教师。
学校>>老师
通常,教师的顺序将保持不变(1、2、3、4、5),但有时,例如,我想在教师 1 和教师 2 之间移动 5 号教师。
使用整数创建索引的正常方法意味着我需要重新排序五个模型中的四个。我想知道的是,如果我使用 float 来订购模型会怎么样?然后,对于我们的五个教师模型,它们将像这样开始:
<p>t1.order = 1.0;</p>
<p>t2.order = 2.0;</p>
<p>t3.order = 3.0;</p>
<p>t4.order = 4.0;</p>
<p>t5.order = 5.0;</p>
当我想在 t1 和 t2 之间移动 t5 时,我执行以下操作:
t5.order = ( t1.order + t2.order ) / 2.0;
所以新列表看起来像:
<p>t1.order = 1.0;</p>
<p>t5.order = 1.5;</p>
<p>t2.order = 2.0;</p>
<p>t3.order = 3.0;</p>
<p>t4.order = 4.0;</p>
我现在已经按照我想要的方式对列表进行了排序,并且只需更新一条记录。我什至可以在 t5 和 t2 之间移动 t3:
t3.order = ( t5.order + t2.order ) / 2.0;
<p>t1.order = 1.0;</p>
<p>t5.order = 1.5;</p>
<p>t3.order = 1.75;</p>
<p>t2.order = 2.0;</p>
<p>t4.order = 4.0;</p>
这一定是有原因的。这不是正确的方式。诚然,当你排序、排序、再排序时,你最终会得到很长的 float ,并且可能在某些时候超出精度,但时不时地,你可以将顺序重置为 1.0、2.0、3.0 .. .n.0。
有人可以劝我放弃这个吗?
最佳答案
考虑到您已经指出的限制:由于精度限制而可能发生冲突,这是一种合理的方法。当然,您可以坚持使用整数并从增量索引开始,例如 10000。
无论哪种情况,您都需要能够检测到碰撞并在发生碰撞时采取必要的措施。由于您实际上只关心“序数”,因此您也可以不时重新校准索引。如果对象集足够短,您可以按现有的“顺序”将它们排序到数组中,然后迭代数组,以指定的增量分配新的“顺序”值。
关于iphone - 核心数据顺序 : Can I use a float?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4137883/
我是一名优秀的程序员,十分优秀!