2016-06-22 73 views
0

你好我有這個對象,我需要創建唯一的標識符(主鍵)來更新,從標識符從領域數據庫檢索等。由於領域不支持這個開箱即用,我想創建我自己的方式來識別它們。存儲具有唯一標識符(主鍵)的對象

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

什麼是用例?什麼是「搖擺」? – Code

+0

如果你運行一個打印出UUIDString連續值的測試,你不需要問這個問題。 – Dominic

回答

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