2016-04-08 8 views

Antwort

2

Eine naive Lösung würde wie folgt aussehen:

func objectId() -> String { 
    let time = String(Int(NSDate().timeIntervalSince1970), radix: 16, uppercase: false) 
    let machine = String(arc4random_uniform(900000) + 100000) 
    let pid = String(arc4random_uniform(9000) + 1000) 
    let counter = String(arc4random_uniform(900000) + 100000) 
    return time + machine + pid + counter 
} 

Die MongoDB docs gibt folgendes über den ObjektID

  • einen 4-Byte-Wert die Sekunden seit der Epoche Unix repräsentierte
  • a 3 -byte Maschinenkennung
  • eine 2-Byte-Prozess-ID
  • ein 3-by te Zähler, beginnend mit einem zufälligen Wert

Das obige wird diese Anforderung erfüllen. Es generiert jedoch nur Zufallszahlenzeichen für andere Teile als den Zeitstempel. Eine perfekte Lösung würde Apis wie NSProcessInfo und NSUUID für Maschine und Pid verwenden. Es müsste auch einen Zähler im Auge behalten.