存储具有唯一标识符的对象(主键)

时间:2016-06-22 13:40:44

标签: swift realm

您好我有这个对象,我需要创建唯一标识符(主键),用于通过标识符从域数据库中更新,检索等。由于境界不支持这种开箱即用,我想创建自己的方法来识别它们。

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

什么解决方案更安全/准确?

1 个答案:

答案 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"
    }
}