Ich brauche eine Zeitstempel Objekt ID des BSON-Format in Swift. Die ObjectID ist für Mongo DB. Wie kann dies erreicht werden?Wie generiere ich eine Mongo DB ObjectID in Swift?
3
A
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.