هل هناك طريقة لتوليد GUID 128bit القياسية (UUID) على ماك؟
-
08-07-2019 - |
سؤال
هل هناك المدمج في وظيفة أي ما يعادل في صافي
Guid.NewGuid();
وفي الكاكاو؟
ورغبتي هي لإنتاج سلسلة على غرار 550e8400-e29b-41d4-a716-446655440000
الذي يمثل معرف فريد.
المحلول
UUIDs في مؤسسة كور، من قبل مكتبة CFUUID. وظيفة كنت تبحث عن هو <وأ href = "http://Developer.Apple.Com/documentation/CoreFoundation/Reference/CFUUIDRef/Reference/reference.html#//apple_ref/c/func/CFUUIDCreate" يختلط = "noreferrer "> CFUUIDCreate .
وFYI لمزيد من البحث: هذه هي الأكثر شيوعا المعروفة باسم UUIDs، لا يتم استخدام مصطلح GUID في كثير من الأحيان خارج العالم مايكروسوفت. قد يكون لديك أكثر حظا مع أن مصطلح البحث.
نصائح أخرى
وبعض كود:
لوUUID سلسلة، وأسلوب فئة التالي ينبغي أن تفعل خدعة:
+(NSString*)UUIDString {
CFUUIDRef theUUID = CFUUIDCreate(NULL);
CFStringRef string = CFUUIDCreateString(NULL, theUUID);
CFRelease(theUUID);
return [(NSString *)string autorelease];
}
وإذا كنت تريد حقا بايت (وليس سلسلة):
+(CFUUIDBytes)UUIDBytes {
CFUUIDRef theUUID = CFUUIDCreate(NULL);
CFUUIDBytes bytes = CFUUIDGetUUIDBytes(theUUID);
CFRelease(theUUID);
return bytes;
}
وحيث CFUUIDBytes هو <وأ href = "http://developer.apple.com/documentation/CoreFoundation/Reference/CFUUIDRef/Reference/reference.html#//apple_ref/doc/c_ref/CFUUIDBytes" يختلط = "noreferrer "> البنية من البايتات UUID.
وعلى الأقل على ماكوسكس 10.5.x قد تستخدم أداة سطر الأوامر "uuidgen" للحصول على سلسلة الخاص بك منها مثلا.
و$ uuidgen
و054209C4-3873-4679-8104-3C18AE780512
وهناك أيضا خيار -hdr مع هذا COMAND الذي يولد مريح في نمط رأس
وانظر الرجل الصفحات لمزيد من بقية المقال.
وأو هناك أداة سطر الأوامر uuidgen
.
ومنذ 10.8 هل يمكن أيضا استخدام: NSString * uuidString = [[NSUUID UUID] UUIDString]؛
وتحقق من ويكيبيديا في وفي الصفحة مؤسسة كور
ومنذ 10.3 أو نحو ذلك، يمكنك استخدام <لأ href = "https://developer.apple.com/library/mac/documentation/cocoa/reference/Foundation/Classes/NSProcessInfo_Class/Reference/Reference.html#// apple_ref / أورينت / instm / NSProcessInfo / globallyUniqueString "يختلط =" نوفولو noreferrer "> [[NSProcessInfo processInfo] globallyUniqueString]
. ومع ذلك، في حين أن هذا <م> حاليا م> يولد UUID، فإنه لم تم ولا يزال غير مضمون للقيام بذلك، لذلك إذا كنت حقا بحاجة الى <م> UUID م> وليس فقط أي سلسلة فريدة من نوعها ، يجب عليك استخدام CFUUID.