我正在嘗試創建一個唯一且具有主鍵的表。我知道在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?