2016-06-22 3 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 в качестве уникального идентификатора, или я должен идти с новой колонки называется идентификатором и использовать UUIDString? и это всегда уникально для нового объекта или только для каждого устройства?

dynamic var id = NSUUID().UUIDString 

Какое решение будет более безопасным/точным?

+0

Что такое прецедент? Что такое 'Swing'? – 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" 
    } 
} 
Смежные вопросы