簡體   English   中英

核心數據順序:我可以使用浮點數嗎?

[英]Core Data order: Can I use a float?

我一直在考慮如何最好地訂購一組Core Data管理的對象,並且我想提出一個我以前從未見過的想法,希望有更多CompSci經驗的人能夠告訴我是否/為什么這是一個壞主意:我們可以使用浮點數對Core Data托管對象進行排序嗎?

情況是這樣的:

為了簡單起見,假設一所學校有很多老師。

學校>>老師

通常,教師的順序將保持不變(1、2、3、4、5),但有時,例如,我想將5號教師移至1教師和2教師之間。

使用整數創建索引的通常方法是,然后我需要對五個模型中的四個重新排序。 我想知道的是,如果我使用浮點數訂購模型怎么辦? 然后,對於我們的五個教師模型,他們將像這樣開始:

t1.order = 1.0; t2.order = 2.0; t3.order = 3.0; t4.order = 4.0; t5.order = 5.0;

t1.order = 1.0; t2.order = 2.0; t3.order = 3.0; t4.order = 4.0; t5.order = 5.0;

t1.order = 1.0; t2.order = 2.0; t3.order = 3.0; t4.order = 4.0; t5.order = 5.0;

t1.order = 1.0; t2.order = 2.0; t3.order = 3.0; t4.order = 4.0; t5.order = 5.0;

t1.order = 1.0; t2.order = 2.0; t3.order = 3.0; t4.order = 4.0; t5.order = 5.0;

當我想在t1和t2之間移動t5時,執行以下操作:

t5.order = ( t1.order + t2.order ) / 2.0;

因此,新列表如下所示:

t1.order = 1.0; t5.order = 1.5; t2.order = 2.0; t3.order = 3.0; t4.order = 4.0;

t1.order = 1.0; t5.order = 1.5; t2.order = 2.0; t3.order = 3.0; t4.order = 4.0;

t1.order = 1.0; t5.order = 1.5; t2.order = 2.0; t3.order = 3.0; t4.order = 4.0;

t1.order = 1.0; t5.order = 1.5; t2.order = 2.0; t3.order = 3.0; t4.order = 4.0;

t1.order = 1.0; t5.order = 1.5; t2.order = 2.0; t3.order = 3.0; t4.order = 4.0;

現在,我可以根據需要對列表進行排序,並且只需要更新一條記錄即可。 我什至可以在t5和t2之間移動t3:

t3.order = ( t5.order + t2.order ) / 2.0;

t1.order = 1.0; t5.order = 1.5; t3.order = 1.75; t2.order = 2.0; t4.order = 4.0;

t1.order = 1.0; t5.order = 1.5; t3.order = 1.75; t2.order = 2.0; t4.order = 4.0;

t1.order = 1.0; t5.order = 1.5; t3.order = 1.75; t2.order = 2.0; t4.order = 4.0;

t1.order = 1.0; t5.order = 1.5; t3.order = 1.75; t2.order = 2.0; t4.order = 4.0;

t1.order = 1.0; t5.order = 1.5; t3.order = 1.75; t2.order = 2.0; t4.order = 4.0;

必須有一個原因,這是沒有辦法的辦法 當然,當您進行排序,排序和排序時,您最終會得到很長的浮點數,並且在某些時候可能會失去精度,但是每隔一段時間,您就可以將順序重置為1.0、2.0、3.0。 n.0

有人可以說服我嗎?

考慮到您已經指出的限制,這是一種合理的方法:由於精度限制而可能發生的碰撞。 當然,您可以堅持使用整數,並以10000為增量開始索引。

無論哪種情況,您都需要能夠檢測到碰撞並在發生碰撞時采取必要的措施。 由於您實際上只關心“常規性”,因此您還可以不時重新校准索引。 如果對象集足夠短,則可以按現有“順序”將它們排序到數組中,然后遍歷數組,以指定的增量分配新的“順序”值。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM