2016-04-08 15 views

答えて

2

一つの素朴な解決策は、次のようになります。

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 
} 

MongoDB docs

  • UNIXエポック3秒を表すオブジェクトID

    • については、次の4バイトの値を指定しますバイトマシン識別子
    • 2バイトのプロセスID
    • a 3バイTeカウンタをランダム値で開始します。

    上記の要件を満たします。ただし、タイムスタンプ以外の部分の乱数文字のみを生成します。完璧な解決策は、machineとpidにはNSProcessInfoNSUUIDのようなAPIを使用します。また、カウンターを追跡する必要があります。

  • 関連する問題