我正在尝试创建一个唯一且具有主键的表。我知道在sqlite中,我们可以开发唯一的AUTOINCREMENT ID SQL AUTOINCREMENT,但可以生成长度为36个字符的唯一GUID。这样做的唯一理由是让它更独特。如何在SQLITE中生成唯一的GUID 36字符iPhone
0
A
回答
1
这是代码位我使用的UUID(我甚至可能已经发现,在这里对堆栈溢出)...
+ (NSString *)GetUUID
{
CFUUIDRef theUUID = CFUUIDCreate(NULL);
CFStringRef string = CFUUIDCreateString(NULL, theUUID);
CFRelease(theUUID);
return [(NSString *)string autorelease];
}
不知所产生的UUID有多长因为在我使用它的方式中,我不在乎,所以可以通过将结果传递给NSLog
调用来检查。
HTH,Pedro :)
0
我使用这段代码来生成iphone上的GUID - NSString上的类别。不记得我在哪里找到它,但它效果很好。
#import "NSString_UniqueID.h"
static unichar x (unsigned int);
@implementation NSString (TWUUID)
+ (NSString*) stringWithUniqueId
{
CFUUIDRef uuid = CFUUIDCreate(NULL);
CFUUIDBytes b = CFUUIDGetUUIDBytes(uuid);
unichar unichars[22];
unichar* c = unichars;
*c++ = x(b.byte0 >> 2);
*c++ = x((b.byte0 & 3 << 4) + (b.byte1 >> 4));
*c++ = x((b.byte1 & 15 << 2) + (b.byte2 >> 6));
*c++ = x(b.byte2 & 63);
*c++ = x(b.byte3 >> 2);
*c++ = x((b.byte3 & 3 << 4) + (b.byte4 >> 4));
*c++ = x((b.byte4 & 15 << 2) + (b.byte5 >> 6));
*c++ = x(b.byte5 & 63);
*c++ = x(b.byte6 >> 2);
*c++ = x((b.byte6 & 3 << 4) + (b.byte7 >> 4));
*c++ = x((b.byte7 & 15 << 2) + (b.byte8 >> 6));
*c++ = x(b.byte8 & 63);
*c++ = x(b.byte9 >> 2);
*c++ = x((b.byte9 & 3 << 4) + (b.byte10 >> 4));
*c++ = x((b.byte10 & 15 << 2) + (b.byte11 >> 6));
*c++ = x(b.byte11 & 63);
*c++ = x(b.byte12 >> 2);
*c++ = x((b.byte12 & 3 << 4) + (b.byte13 >> 4));
*c++ = x((b.byte13 & 15 << 2) + (b.byte14 >> 6));
*c++ = x(b.byte14 & 63);
*c++ = x(b.byte15 >> 2);
*c = x(b.byte15 & 3);
CFRelease(uuid);
return [NSString stringWithCharacters: unichars length: 22];
}
@end
// Convert six-bit values into letters, numbers or _ or $ (64 characters in that set).
//------------------------------------------------------------------------------------
unichar x (unsigned int c)
{
if (c < 26) return 'a' + c;
if (c < 52) return 'A' + c - 26;
if (c < 62) return '0' + c - 52;
if (c == 62) return '$';
return '_';
}
相关问题
- 1. 不生成唯一的GUID
- 2. 如何生成唯一的字符串
- 3. 如何生成唯一字符串?
- 4. 如何为字符串生成GUID?
- 5. 在ios中生成唯一字符
- 6. 在FsCheck中生成唯一字符串
- 7. 如何在循环中生成唯一的字符串对象
- 8. 如何在VBScript中生成GUID?
- 9. 如何在Vim中生成GUID?
- 10. 如何生成20个字符的字母数字唯一ID
- 11. 如何在IOS中生成20 BASE-36唯一ID?样本唯一ID在这里“KI21AJDIWJS239323112”
- 12. 在数据库外部生成一个非guid唯一键
- 13. 的Servlet /生成唯一的字符串
- 14. Javascript GUID(全局唯一标识符)生成器说明
- 15. 如何从字符串集合中生成一个唯一的字符串?
- 16. VarChar(36)或Char(36)的SQL Server GUID?
- 17. 从字符串生成唯一的ID
- 18. PHP:生成唯一的字符串
- 19. 如何在Oracle中生成GUID?
- 20. 如何在hibernate中按需生成GUID?
- 21. 什么是组成一个唯一的标识符,如GUID
- 22. 使用C#中的Guid生成实例的唯一ID
- 23. 如何在MySQL中生成唯一的字母数字内容?
- 24. 如何在PHP中生成一个唯一的数字范围
- 25. 通过UDFunction生成唯一字符串
- 26. GUID:VARCHAR(36)与唯一标识符
- 27. 我将如何在Ruby中生成一个随机且唯一的字符串?
- 28. 如何在C++中生成一组唯一的哈希字符串?
- 29. 如何在.NET中生成1版Guid?
- 30. 在SQL Server中如何生成GUID?