您好我有这个对象,我需要创建唯一标识符(主键),用于通过标识符从域数据库中更新,检索等。由于境界不支持这种开箱即用,我想创建自己的方法来识别它们。
class Swing: Object {
dynamic var latitude : Double = 0.0
dynamic var longitute : Double = 0.0
dynamic var speed : Double = 0.0
dynamic var date : NSDate = NSDate()
}
我可以将NSDate用作唯一ID,还是应该使用名为id的新列并使用UUIDString?这对于新对象或每个设备始终是唯一的吗?
dynamic var id = NSUUID().UUIDString
什么解决方案更安全/准确?
答案 0 :(得分:3)
简单地使用NSUUID
作为主键可能更安全。它们保证是独一无二的,并且根据您保存到您的财产的NSDate
值的类型,绝对无法保证唯一性。
NSUUID是一个128位随机生成的值,因此即使在不同的设备上,两次生成相同字符串的几率也是天文数字。
class Swing: Object {
dynamic var id = NSUUID().UUIDString
dynamic var latitude : Double = 0.0
dynamic var longitute : Double = 0.0
dynamic var speed : Double = 0.0
dynamic var date : NSDate = NSDate()
override class func primaryKey() -> String? {
return "id"
}
}