2014-12-22 33 views
0

是否有任何簡單的內置方式爲任何應用內對象生成唯一標識符(哈希是不可接受的,因爲在我的情況下可以使用具有相同數據的對象) ID可以作爲字符串或整數,只需要本地唯一性。 谷歌並不能幫助用於快速對象的UID

+0

您是否可以使用管理它們的自定義類來爲對象分配唯一標識符? – Rambatino

+0

請參見[NSUUID類](https://developer.apple.com/library/mac/documentation/Foundation/Reference/NSUUID_Class/index.html)。 – Darren

+0

謝謝,NSUUID似乎正是我所需要的。 – maxpovver

回答

1

如果你需要做的是確定是否有明顯的是比較平等與==兩個對象,你可以使用===操作:

let first = MyObject(value: 1) 
let second = MyObject(value: 1) 

first == second // returns true 
first === second // returns false 

如果你真的想要得到探索Swift標準庫的唯一標識符顯示:

/// Return an UnsafePointer to the storage used for `object`. There's 
/// not much you can do with this other than use it to identify the 
/// object 
func unsafeAddressOf(object: AnyObject) -> UnsafePointer<Void> 

我對使用該標準的可取性沒有任何要求。它甚至可能不會按照您認爲的方式工作,這取決於編譯器提供的copy-on-write shenanigans。

+0

爲什麼不能從註釋中獲取NSUUID?例如,我想從文件或網絡重新創建一組對象後不會改變的東西,所以我不確定對象的地址是否是最佳解決方案... – maxpovver

+0

啊,我不明白你需要什麼,那麼,特別是當你說「只需要本地唯一性」時。啊,好吧... – dpassage

+0

我的意思是隻有在同一個正在運行的應用程序中創建的對象應該有唯一的ID ... 對不起我的英語 - 不能告訴我需要清楚 - 很久沒有實踐過了。 – maxpovver