swift - 如何在 Swift 中生成 Mongo DB ObjectID?

标签 swift bson

我需要在 Swift 中生成一个带时间戳的 BSON 格式的对象 ID。 ObjectID 用于 Mongo DB。如何实现?

最佳答案

一个简单的解决方案如下所示:

func objectId() -> String {
    let time = String(Int(Date().timeIntervalSince1970), radix: 16, uppercase: false)
    let machine = String(Int.random(in: 100000 ..< 999999))
    let pid = String(Int.random(in: 1000 ..< 9999))
    let counter = String(Int.random(in: 100000 ..< 999999))
    return time + machine + pid + counter
}

MongoDB docs指定以下有关 ObjectID 的信息

  • 一个 4 字节的值,表示自 Unix 纪元以来的秒数
  • 一个 3 字节的机器标识符
  • 一个 2 字节的进程 ID
  • 一个 3 字节的计数器,以一个随机值开始

以上将满足该要求。但是,它只会为时间戳以外的部分生成随机数字字符。一个完美的解决方案是为机器和 pid 使用诸如 NSProcessInfoNSUUID 之类的 API。它还必须跟踪计数器。

关于swift - 如何在 Swift 中生成 Mongo DB ObjectID?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36508470/

相关文章:

java - 如何使用 Mongo Java 客户端将 BSON Int64 编码为 JSON 字符串

mongodb - 防止 bson.ObjectIdHex 中的运行时 panic

ios - 如何制作三角形而不是矩形?

ios - 如何缩放 CALayer 以适应视频层

unity-game-engine - unity Json.net bson 自引用循环

json - Haskell - 将 BSON 映射到 JSON 的正确方法 - 将代码放在哪里

Golang 将具有特殊字符键的 BSON 解码为结构

ios - IOS swift 中的完成 block

ios - 自定义对象中的动态变量数组类型

ios - 解析目标 - C 到 Swift iOS