UUID v1 Objective-C实现

时间:2013-06-07 11:47:17

标签: ios objective-c uuid

我想在我的iOS App中实现UUID v1。 我知道它由Mac地址和时间戳组成,如中所述 http://en.wikipedia.org/wiki/Universally_unique_identifier#Version_1_.28MAC_address.29

基于CFUUID功能,这个V1有没有Objective-c实现?

我已经有了mac地址和时间戳。

维基百科上的UUID v1描述:“UUID的原始(版本1)生成方案将UUID版本与生成UUID的计算机的MAC地址连接,并且数量为100-自西方采用公历以来的纳秒间隔

它也在http://www.ietf.org/rfc/rfc4122.txt指定,但似乎需要时间来实现它。

我找到了这个链接:http://www.famkruithof.net/guid-uuid-timebased.html,他们对创建v1 UUID的步骤有一个简单的解释。在我实现它之前,是否有任何现有的实现?

2 个答案:

答案 0 :(得分:0)

我认为使用框架功能是常见的行为。这就是使用CFUUID。例如:

+(NSString*)get {
    NSString *deviceID = [[NSUserDefaults standardUserDefaults] objectForKey:@"DeviceID"];
    if (!deviceID) {
        CFUUIDRef theUUID = CFUUIDCreate(NULL);
        CFStringRef string = CFUUIDCreateString(NULL, theUUID);
        CFRelease(theUUID);
        deviceID = (NSString*)string;
        [[NSUserDefaults standardUserDefaults] setValue:deviceID forKey:@"DeviceID"];
        [[NSUserDefaults standardUserDefaults] synchronize];
    }

    return deviceID;
}

答案 1 :(得分:0)

请尝试这个。它可能对您有所帮助

 +(NSString*) Create_UDID
 {
      CFUUIDRef theUUID = CFUUIDCreate(NULL);
      CFStringRef string = CFUUIDCreateString(NULL, theUUID);
      CFRelease(theUUID);

      NSString* strString = [NSString stringWithFormat:@"%@", string];
      NSString *strValue = [strString stringByReplacingOccurrencesOfString:@"-"withString:@""];

    if (strValue == nil) {
         strValue = @"";
     }

      return strValue;
 }