兩個相關的問題:把從NSArray的項目的NSSet爲NSManagedObject
當您使用
[NSSet setWithArray:]
,它會自動刪除重複的對象嗎?你怎麼能告訴究竟你想要「重複」的意思?即如果您有一堆「大學課程」對象,每個對象都有一個名稱和部分編號,並且您希望轉移到NSSet,爲每個特定名稱保留一個大學課程(例如,如果您有三部分微積分,你如何告訴它只保留一段微積分,即使它們的分段號不同,所以它們在默認情況下不會被認爲是相同的)。
謝謝!讓我知道,如果這個問題根本不清楚。我很難找出一種方式來表達它。
編輯:這個問題是特定於NSManagedObjects,它的isEqual:
方法不能被覆蓋。
對不起,這是一個糟糕的例子,這正是我從頭頂上想出來的。我可以重寫isEqual,並將查看'hash'函數。以前沒有聽說過。 (顯然是iOS的新手)。 – Mason
@梅森:很酷。覆蓋時,通過使用任何內部數據的哈希值來傳遞平等差別通常很容易,例如字符串的哈希值與課程名稱。散列*需要*對於「相等」對象是相同的,但它不必是唯一的。 –
呃哦,增加了複雜性。我使用的對象是NSManagedObjects,因此覆蓋'isEqual:'是非法的。我想這會改變這個問題。有小費嗎? – Mason