2014-12-22 35 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