2015-10-17 44 views
2

在境界是有没有办法设置一个唯一的ID存储在数据库中的每个对象?我不一定每次都需要它自动递增。我只是想知道是否有办法在iOS 8或更高版本的Swift 2中执行此操作?我知道你可以在objC中做到这一点。领域唯一ID与斯威夫特2

回答

2

,为您的领域中的所有对象生成UUID,您可以创建生成UUID的超:

class IdentifiableObject : Object { 
    private(set) dynamic var uuid = NSUUID().UUIDString 
} 

虽然这个作品,它带有一个主要渔获物,至少要等到境界支持只读只有属性。更新对象时,您必须首先获取存储的对象,然后再保存。

+0

请注意,这会导致一些问题,如果你坚持这些到服务器 - 在这种方式生成的ID是不能保证是独一无二的,并可能导致冲突。故障安全的方式是在创建时坚持服务器并让服务器发回一个ID。例如,如果生成的ID对用户来说是唯一的,那么这是可以的。 –

+0

事实上,这是正确的,但是这不是一个领域相关的问题。这是相当的,你是如何处理的同步你有本地和远程存储的对象和一些与任何类型的共享持久性的工作时要考虑的问题。 – Donamite

+1

@ScottFister我要说的是,“为了有一个重复建设的十亿的机会,1030000亿4点的UUID必须产生”是许多用例可以接受的风险?见https://en.wikipedia.org/wiki/Universally_unique_identifier#Collisions – Zyphrax