在覈心數據中,如果我們有多值關係(例如業務可以有多個關鍵字時),則在子類NSManagedObject生成器中,Apple將使用NSOrderedSet而不是NSArray。爲什麼蘋果在CoreData中使用NSOrderedSet而不是NSArray作爲有序的多值關係?
它們幾乎相等,只是在NSOrderedSet中檢查所有權稍快。
爲什麼蘋果不使用更爲人熟悉和着名的NSArray?
在覈心數據中,如果我們有多值關係(例如業務可以有多個關鍵字時),則在子類NSManagedObject生成器中,Apple將使用NSOrderedSet而不是NSArray。爲什麼蘋果在CoreData中使用NSOrderedSet而不是NSArray作爲有序的多值關係?
它們幾乎相等,只是在NSOrderedSet中檢查所有權稍快。
爲什麼蘋果不使用更爲人熟悉和着名的NSArray?
我的猜測是:因爲NSOrderedSet
管理一組不同的元素,類似於無序關係的NSSet
。
使用NSArray
您可以創建一個與另一個對象不止一次相關的對象。
從docs:
您可以使用有序集來替代陣列時對象是否包含在集合中元素的順序是重要的測試和性能是成員資格的代價─測試的數組比檢測組的成員資格要慢。
我已閱讀該文檔。考慮到大多數會員的計數很低,小型會員資格檢查似乎太過簡單。我認爲馬丁的答案是正確的。 +1仍然。 –
啊......他們必須是不同的.....很可能這是正確的答案。 –
因此,爲什麼會有人使用NSArray? – PostCodeism
@PostCodeism - 因爲你可能正在存儲一系列非獨特元素,它們相對於彼此的位置是重要的。 IE,也許你有一組代表一首歌的字母或一組代表歌曲的音符。字母可以在單詞中重複,筆記可以在一首歌中重複,因此它不應該忽略重複的元素,而重新排列它們不會給你相同的單詞或歌曲,因此它也需要跟蹤順序。如果您需要可能重複的訂單元素,則需要一個NSArray。 – ArtOfWarfare